Определите, при каком наименьшем введённом значении переменной s программа выведет число 60. Для Вашего удобства программа представлена на четырёх языках программирования.
| Бейсик | Python |
|---|---|
DIM S, N AS INTEGER INPUT S N = 36 WHILE S < 2020 S = S * 2 N = N + 3 WEND PRINT N
| s = int(input()) n = 36 while s < 2020: s = s * 2 n = n + 3 print(n)
|
| Паскаль | Алгоритмический язык |
var s, n: integer; begin readln(s); n := 36; while s < 2020 do begin s := s * 2; n := n + 3 end; writeln(n) end.
| алг нач цел n, s ввод s n := 36 нц пока s < 2020 s := s * 2 n := n + 3 кц вывод n кон |
| Си++ | |
#include <iostream> using namespace std; int main() { int s; cin >> s; int n = 36; while (s < 2020) { s = s * 2; n = n + 3; } cout << n << endl; return 0; }
| |
Заметим, что чтобы программа вывела число 60, к числу N = 36 должно прибавиться 24, т. е. цикл должен выполниться 8 раз. Поскольку в каждой итерации цикла число s умножается на 2, будем рассматривать степени двойки. Ближайшее число, большее 2020 и являющееся 2 в n-ной степени — 2048 = 211. Значит, наименьшее возможное входное число s — 23 = 8.
Ответ: 8.
Приведём другое решение на языке Python.
for i in range(1, 10000):
s = i
n = 36
while s < 2020:
s = s * 2
n = n + 3
if n == 60:
print(i)
break

