Определите, при каком наибольшем введённом значении переменной s программа выведет число 64. Для Вашего удобства программа представлена на четырёх языках программирования.
| Си++ | Python |
|---|---|
#include <iostream> using namespace std; int main() { int s, n; cin >> s; s = s / 10; n = 1 ; while (s < 51) { s = s + 5; n = n * 2; } cout << n << endl; return 0; }
| s = int(input()) s = s // 10 n = 1 while s < 51: s = s + 5 n = n * 2 print(n)
|
| Паскаль | Алгоритмический язык |
var s, n: integer; begin readln (s); s := s div 10; n := 1; while s < 51 do begin s := s + 5; n := n * 2 end; writeln(n) end.
| алг нач цел n, s ввод s s := div( s, 10) n := 1 нц пока s < 51 s := s + 5 n := n * 2 кц вывод n кон |
Заметим, что число 64 это 2 в шестой степени. Значит, цикл должен выполниться 6 раз. Максимальное число, при котором цикл выполнится последний раз — 50. А следующий шаг — 55 уже не пройдет. Тогда ответ — 55 − 5 · 6 = 25. А так как на первом шаге берется целое от деления на 10, то третью цифру нужно взять максимально возможную — 9.
Ответ: 259.
Примечание.
Требуется определить наибольшее число, при котором программа выведет 64. Число 210, при котором программа тоже выведет 64, не подходит, поскольку оно меньше 259.
Приведём другое решение на языке Python.
for i in range(10000, 1, -1):
s = i
s = s // 10
n = 1
while s < 51:
s = s + 5
n = n * 2
if n == 64:
print(i)
break

