Известно, что при вводе некоторых положительных значений переменных s и x данная программа выводит число 17. Определите, при каком наименьшем введённом значении переменной x это возможно. Для Вашего удобства программа представлена на четырёх языках программирования.
| Python | Си++ | |
|---|---|---|
s = int(input()) x = int(input()) s = 100*s + x n = 1 while s < 2021: s = s + 5*n n = n + 1 print(n)
| #include <iostream> using namespace std; int main() { int s, x, n; cin >> s >> x; s = 100*s + x; n = 1; while (s < 2021) { s = s + 5*n; n = n + 1; } cout << n << endl; return 0; }
| |
| Паскаль | Алгоритмический язык | |
var s, x, n: integer; begin readln(s, x); s := 100*s + x; n := 1; while s < 2021 do begin s := s + 5*n; n := n + 1 end; writeln(n) end.
| алг нач цел s, x, n ввод s, x s := 100*s + x n := 1 нц пока s < 2021 s := s + 5*n n := n + 1 кц вывод n, нс кон | |
Решим задачу программно методом перебора. Ниже приведена программа на языке PascalABC:
var s, n, i, j: integer;
begin
for i := 1 to 1000 do begin
for j := 1 to 1000 do begin
n := 1;
s := i;
s := 100*s + j;
while s < 2021 do begin
s := s + 5*n;
n := n + 1
end;
if (n = 17) and (j <> 0) then begin
writeln(j);
break;
end;
end;
end;
end.
После выполнения программы наименьшее целое положительное число, выведенное на экран, будет равно 1.
Ответ: 1.
Приведем другое решение.
Для того, чтобы программа вывела число 17, цикл должен выполниться 16 раз. За 15 итераций цикла значение переменной s увеличится на 5 · (1 + 2 + ... + 15) = 600, и для продолжения цикла должно выполняться условие s + 600 < 2021. За 16 итераций цикла значение переменной s увеличится на 5 · (1 + 2 + ... + 16) = 680, и для завершения цикла должно выполняться условие s + 680 ≥ 2021. Следовательно, перед началом цикла значение переменной s должно удовлетворять условиям 1341 ≤ s < 1421. Тогда исходно переменная s должна быть равна 13 или 14, но для того, чтобы переменная x была минимальной, необходимо, чтобы s = 14, тогда можно взять x = 1.
Приведём другое решение на языке Python.
for i in range(1, 100):
s = i
for j in range(1, 100):
x = j
s = 100 * s + x
n = 1
while s < 2021:
s = s + 5 * n
n = n + 1
if n == 17:
print(j)

