Ниже на четырёх языках программирования записана программа, которая вводит натуральное число x, выполняет преобразования, а затем выводит результат. Укажите наименьшее возможное значение x, при вводе которого программа выведет число 10.
| C++ | Python |
|---|---|
#include <iostream> using namespace std;
int main() { int x, a, b; cin >> x; a = 7*x + 27; b = 7*x – 33; while (a != b) { if (a > b) a -= b; else b -= a; } cout << a << endl; return 0; }
| x = int(input()) a = 7*x + 27 b = 7*x - 33 while a != b: if a > b: a -= b else: b -= a print(a)
|
| Паскаль | Алгоритмический язык |
var x, a, b: integer; begin readln(x); a := 7*x + 27; b := 7*x – 33; while a <> b do begin if a > b then a := a – b else b := b-a end; writeln(a) end.
| алг нач цел x, a, b ввод x a := 7*x + 27 b := 7*x – 33 нц пока a <> b если a > b то a := a – b иначе b := b - a все кц вывод a, нс кон |
Режим задачу с помощью языка PascalABC перебором. Ниже приведена программа для решения этой задачи. Заметим, что если начинать перебор с единицы, то выполнение программы будет зависать из-за наличия отрицательных чисел. Необходимо начинать перебор с числа, которое в результате умножения на семь будет
var x, a, b, i: integer;
begin
for i := 5 to 1000 do begin
x := i;
a := 7*x + 27;
b := 7*x - 33;
while a <> b do begin
if a > b then
a := a - b
else
b := b-a
end;
if a = 10 then begin
writeln(i);
break;
end;
end;
end.
В результате работы программы получаем ответ — 29.
Ответ: 29.
Приведём другое решение на языке Python.
for i in range(5, 10000):
x = i
a = 7 * x + 27
b = 7 * x - 33 # начинаем с 5, чтобы b>0, иначе не попасть на else
while a != b:
if a > b:
a -= b
else:
b -= a
if a == 10:
print(i)
break

