ЕГЭ по информатике задание 20
Тема: «Анализ программы, содержащей циклы и ветвления»
Ниже на пяти языках программирования записан алгоритм. Получив на вход число x, этот алгоритм печатает два числа a и b. Укажите наименьшее из таких чисел x, при вводе
которых алгоритм печатает сначала 2, а потом 4.
Python | Паскаль |
x = int(input()) a=0; b=0 while x > 0: if x%2 == 0: a += 1 else: b += x%6 x = x//6 print (a, b) |
var x, a, b: longint; begin readln (x);a := 0; b := 0; while x > 0 do begin if x mod 2 = 0 then a := a+ 1 else b := b + x mod 6; x := x div 6; end; writeln (a); write(b); end. |
РЕШЕНИЕ
Анализ действия программы
В первой строке объявляется 3 переменные типа длинное целое: var x, a, b: longint. Далее пользователь вводит значение х: readln (x). Переменным а и b присваивается значение 0 a := 0; b := 0. Затем в цикле пока х больше 0 while x > 0 do если х – четно, то if x mod 2 = 0 then прибавляем к а единицу a := a+ 1 иначе прибавляем к b — остаток от деления х на 6 новое значение х = целочисленное деление х на 6 x := x div 6. Выводим а и b. Напечатать программа должна 2 и 4. Это значения переменных a=2, b=4.
Анализируя цикл видим, что переменная а наращивается когда х – четное, то есть число х (в ходе изменения) будет четным 2 раза (так как а=2), в противном случае число b наращивается на (x mod 6) – остаток от деления х на 6.
То есть в ходе уменьшения число х должно:
- быть 2 раза четным
- быть нечетным и иметь сумму остатков от деления на 6 равную 4.
ГЛАВНАЯ МЫСЛЬ: перед нами шестиричная система, в которой необходимо найти минимальную сумму чисел равных 4, при этом число должно быть 2 раза четным, т.к., a = 2
Шестиричная система счислений — это цифры [ 0 1 2 3 4 5 ]
Как получить число 4?
0+4 ( 0 и 4 – не подходит числа четные)
1+3 (1 и 3 – подходит, так как числа нечетные)
2+2 (2 и 2 – не подходит числа четные)
В итоге надо найти четырехзначное число, в котором две нечётные цифры 1 и 3, а две другие цифры чётные. Например: 2213, 1344, 4013
НО! В задании сказано:
Укажите наименьшее из таких чисел x
Это означает, что таких чисел x, которые выведут результат работы алгоритма будет несколько, а нам надо вывести только наименьшее. Таким минимальным шестиричным числом может быть только 1003
Остается перевести число 1003 в десятичную систему счислений, т.к. число x должно быть десятичным.
Перевод числа из шестиричной системы счисления в десятичную
Ответ: 219
[newsletter_signup_form id=1]
Самостоятельная работа
Для данного задания укажите наибольшее из таких чисел x, при вводе которых алгоритм печатает сначала 2, а потом 4.
Ответ напишите в комментариях этого поста