Известно, что при вводе некоторых положительных значений переменных s и x данная программа выводит число 15. Определите, при каком наименьшем введённом значении переменной 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 300 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 = 15 then begin
writeln(j);
break;
end;
end;
end;
end.
После выполнения программы наименьшее целое положительное число, выведенное на экран, будет равно 1.
Ответ: 1.
Приведем аналитическое решение.
Чтобы программа вывела 15, цикл должен выполниться 14 раз. Значение переменной n, умноженное на 5, при каждом проходе цикла прибавляется к переменной s, после чего увеличивается на 1. Следовательно, к переменной s будет прибавлено число 5 · (1 + 2 + ... + 14) = 525. Получившееся значение переменной s должно быть больше или равно 2021, чтобы выполнение цикла завершилось. Следовательно, s · 100 + x + 525 ≥ 2021, откуда s · 100 + x ≥ 1496, где s — введенное с клавиатуры значение.
С другой стороны, после 13 проходов цикла значение переменной s должно быть меньше 2021, чтобы цикл продолжался. За 13 проходов цикла будет прибавлено число 5 · (1 + 2+ ... + 13) = 455. Получим неравенство s · 100 + x + 455 < 2021.
Таким образом, значения вводимых с клавиатуры переменных s и x должны удовлетворять двойному неравенству 1496 ≤ s · 100 + x < 1566. При s = 14 наименьшее положительное значение x равно 96, а при s = 15 наименьшее положительное значение x равно 1, следовательно, ответ 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 += 1
if n == 15:
print(x)

