Ниже на пяти языках программирования записан алгоритм. Получив на вход число х, этот алгоритм печатает число М. Известно, что х > 40. Укажите наименьшее такое (т. е. большее 40) число х, при вводе которого алгоритм печатает 5.
| Бейсик | Python |
|---|---|
DIM X, L, M AS INTEGER INPUT X L = X M = 5 IF L MOD 2 = 0 THEN M = 24 ENDIF WHILE L <> M IF L > M THEN L = L − M ELSE M = M − L ENDIF WEND PRINT M
| x = int(input()) L = x M = 5 if L % 2 == 0: M = 24 while L != M: if L > M: L = L − M else: M = M − L print(M)
|
| Паскаль | Алгоритмический язык |
var x, L, M: integer; begin readln(x); L := x; M := 5; if L mod 2 = 0 then M := 24; while L <> M do if L > M then L := L − M else M := M − L writeln(M); end.
| алг нач цел x, L, M ввод x L := x M := 5 если mod(L, 2) = 0 то M := 24 все нц пока L <> M если L > M то L := L − M иначе M = M − L все кц вывод M кон |
| Си++ | |
#include <iostream> using namespace std; int main() { int x, L, M; cin >> x; L = x; M = 5; if (L % 2 == 0) M = 24; while (L != M) { if(L > M) L = L − M; else M = M − L } cout « M « endl;
| |
Цикл while — ничто иное, как алгоритм Евклида, то есть он ищет наибольший общий делитель чисел M и L. В конце работы цикла M = L = НОД(M, L).
Если x — чётное число, то L = x, M = 24. Если нечётное, то L = x, M = 5.
24 не делится на 5, поэтому чтобы НОД(M, L) равнялся 5, нужно, M = 5, то есть чтобы x был нечётным.
Таким образом, нам нужно самое маленькое нечётное число, которое больше 40 и делится на 5. Это 45.
Ответ: 45.
Приведём другое решение на языке Python.
for i in range(41, 1000):
x = i
L = x
M = 5
if L % 2 == 0:
M = 24
while L != M:
if L > M:
L = L - M
else:
M = M - L
if M == 5:
print(i)
break

