Форум » Циклы и ветвления » ЕГЭ 22 № 174 » Ответить

ЕГЭ 22 № 174

Шишунов И.В.: Здравствуйте! Во-первых, в задании написано [quote]Получив на вход натуральное число x, этот алгоритм печатает два числа.[/quote], а в коде программы вводятся 2 числа x и y. Во-вторых, у меня не сходится с ответом. Вот программа: [pre2] for x in range (1,1000): for y in range (1,1000): x_temp = x y_temp = y a = 0 b = 0 while x_temp > 0 or y_temp>0: if x_temp > 0: a = a + 1 if y_temp > 0: b = b + 1 x_temp = x_temp // 2 y_temp = y_temp // 10 if a == 6 and y == 7: print(x, y, x*y) [/pre2] Наименьшие x и y выводит 32 и 7, их произведение 224. В ответе 32000000

Ответов - 4

polyakovss: Здравствуйте, Шишунов И.В.! 32 000 000 - правильный ответ. Вы пишете: Наименьшие x и y выводит 32 и 7 Если эти значения ввести в приведенную в условии задачи программу, то она выдаст 6 и 1, а не 6 и 7. Эту задачу проще решить устно, а не формально с использовнием перебора: a - количество разрядов в двоичном представлении числа x (равно 6); b - количество разрядов в десятичном представлении числа y (равно 7). Наименьшие натуральные значения: x = 32 y = 1 000 000 По-моему, очень хорошая задача, так как требует понимания смысла алгоритма, а не выполнения его формального переборного варианта.

Шишунов И.В.: Спасибо! if a == 6 and y == 7: Здесь опечатка была, надо не y==7, а b == 7. Перебором да, не получается.

Anastasja: Добрый день. А как быть с тем, что переменная типа integer не может принимать такие большие значения?


Поляков: Anastasja пишет: А как быть с тем, что переменная типа integer не может принимать такие большие значения? Четырёхбайтный integer в PascalABC.NET может вместить 231-1 = 2147483647. Если этого мало, есть BigInteger.



полная версия страницы