Автор | Сообщение |
|
Отправлено: 23.03.21 18:37. Заголовок: ЕГЭ 22 № 174
Здравствуйте! Во-первых, в задании написано цитата: | Получив на вход натуральное число x, этот алгоритм печатает два числа. |
|
, а в коде программы вводятся 2 числа x и y. Во-вторых, у меня не сходится с ответом. Вот программа: 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) Наименьшие x и y выводит 32 и 7, их произведение 224. В ответе 32000000
|
|
|
Ответов - 4
[только новые]
|
|
|
Отправлено: 23.03.21 20:21. Заголовок: Ответ
Здравствуйте, Шишунов И.В.! 32 000 000 - правильный ответ. Вы пишете: цитата: | Наименьшие x и y выводит 32 и 7 |
| Если эти значения ввести в приведенную в условии задачи программу, то она выдаст 6 и 1, а не 6 и 7. Эту задачу проще решить устно, а не формально с использовнием перебора: a - количество разрядов в двоичном представлении числа x (равно 6); b - количество разрядов в десятичном представлении числа y (равно 7). Наименьшие натуральные значения: x = 32 y = 1 000 000 По-моему, очень хорошая задача, так как требует понимания смысла алгоритма, а не выполнения его формального переборного варианта.
|
|
|
|
Отправлено: 24.03.21 14:57. Заголовок: Спасибо!..
Спасибо! if a == 6 and y == 7: Здесь опечатка была, надо не y==7, а b == 7. Перебором да, не получается.
|
|
|
|
Отправлено: 26.04.21 19:58. Заголовок: Добрый день. А как б..
Добрый день. А как быть с тем, что переменная типа integer не может принимать такие большие значения?
|
|
|
|
| Администратор
|
Сообщение: 2751
|
|
Отправлено: 26.04.21 20:09. Заголовок: Anastasja пишет: А ..
Anastasja пишет: цитата: | А как быть с тем, что переменная типа integer не может принимать такие большие значения? |
|
Четырёхбайтный integer в PascalABC.NET может вместить 2 31-1 = 2147483647. Если этого мало, есть BigInteger.
|
|
|
|