Определите, при каком наименьшем введённом значении переменной s программа выведет число 32. Для Вашего удобства программа представлена на четырёх языках программирования.
| Паскаль | Python |
|---|---|
var s, n: integer; begin readln (s); s := (s − 21) div 10; n := 1; while s > 0 do begin n := n * 2; s := s − n; end; writeln(n) end.
| s = int(input()) s = (s − 21) // 10 n = 1 while s > 0: n = n * 2 s = s - n print(n)
|
| Алгоритмический язык | С++ |
алг нач цел n, s ввод s s := div( (s − 21), 10) n := 1 нц пока s > 0 n := n * 2 s := s − n кц вывод n кон
| #include <iostream> using namespace std; int main() { int s, n; cin >> s; s = (s − 21) / 10; n = 1 ; while (s > 0) { n = n * 2; s = s − n; } cout << n << endl; return 0; } |
Решим задачу с помощью программы методом перебора. Ниже приведена программа на языке PascalABC:
var s, n, i: integer;
begin
for i := 1 to 1000 do begin
s := (i - 21) div 10;
n := 1;
while s > 0 do begin
n := n * 2;
s := s - n;
end;
if n = 32 then begin
writeln(i);
break;
end;
end;
end.
После выполнения программы получим ответ — 331.
Ответ: 331.
Приведём другое решение на языке Python.
for i in range(1, 1000):
s = i
s = (s - 21) // 10
n = 1
while s > 0:
n = n * 2
s = s - n
if n == 32:
print(i)
break

