Вход


Главная страница >> Учебный процесс >> Задачник >> Олимпиадные задачи (с решениями) >> Переборные задачи >> Номер 7

[Назад]    [Содержание ]    [Вперед]

  


Номер 7


  Условие: Номер 7


Задача 6. a) В написанном выражении ((((1?2)?3)?4)?5)?6 вместо каждого знака ? вставить знак одной из 4 арифметических операций +,-,*,/ так, чтобы результат вычислений равнялся 35 (при делении дробная часть в частном отбрасывается). Найти все решения. б) Вводится строка не более чем из 6 цифр и некоторое целое число R. Расставить знаки арифметических операций ("+", "-", "*", "/"; минус не является унарным, т.е. не может обозначать отрицательность числа; деление есть деление нацело, т.е. 11/3=3) и открывающие и закрывающие круглые скобки так, чтобы получить в результате вычисления получившегося выражения число R. Лишние круглые скобки ошибкой не являются. Например: Строка 505597, R=120: ((5+0)*((5*5)-(9/7)))=120.

  Решение задачи: Номер 7


Решение задачи 6. а) Всего может быть 4 арифметических операции - "+","-","*", "/". Занумеруем их от 0 до 3. Вместо каждого из пяти знаков "?" может стоять один из знаков операции. Заведем массив A из 5 целых чисел, в i-ом элементе массива будет храниться код соответствующей i-му знаку "?" операции, т.е. число от 0 до 3. Начальная конфигурация - все элементы массива нулевые, конечная - все они равны 3. Генерация очередной конфигурации знаков равносильна прибавлению единицы в четверичной системе счисления, в которой разрешается пользоваться только цифрами от 0 до 3 (подобный метод решения мы уже встречали в задаче 2). Приведем программный фрагмент генерации конфигураций. Для удобства возьмем массив A не из 5, а из 6 элементов. О получении последней конфигурации знаков будет свидетельствовать появление 1 в шестом разряде (если к 333334 прибавить 1, то получим 1000004 ). for i:=1 to 6 do A[i]:=0; while A[6]=0 do begin .... { проверка, получили ли мы нужный результат } .... i:=1; while A[i]=3 do { Перенос в следующий разряд при } begin { прибавлении единицы } A[i]:=0; i:=i+1; end; A[i]:=A[i]+1; end;

Назад



[Назад]    [Содержание ]    [Вперед]

  


  
За содержание страницы отвечает Гончарова М.Н.
©
Кафедра СПиКБ, 2002-2017