Просмотр задания
Ниже записан алгоритм. Получив на вход число x, этот алгоритм печатает число M. Известно, что x > 100. Укажите наименьшее такое (т.е. большее 100) число x, при вводе которого алгоритм печатает 11.
Паскаль
var x, L, M: integer;
begin
readln(x);
L := x - 21;
M := x + 12;
while L M do
if L > M then
L := L - M
else
M := M – L;
writeln(M);
end.
Гость
20 апреля 2016
Ответы (1)
Информатик БУ # 24 апреля 2016 в 23:06 0
Код PASCAL:
  1. while L M do
  2. if L > M then
  3. L := L - M
  4. else
  5. M := M – L;
  6. writeln(M);
Алгоритм Евклида по поиску НОД (наибольший общий делитель).
После выполнения алгоритма выводится значение M, равное 11, значит НОД между M и L равен 11.
Выходит, что М и L делятся на 11.
Подберем такое число L, чтобы x при этом был наименьшим и больше 100, и при этом L должно делиться на 11.
Это число 88 (при L=88 x=88+21=109, если же взять меньше, т.е. L=77, то x=77+21=98, что не подходит).

Итак. L=88, X=109, M=109+12=121.

Проверим по алгоритму (вычитаем из наибольшего наименьшее до тех пор, пока числа не сравняются):
88 121
88 33
55 33
22 33
22 11
11 11

Подходит. Нам нужен x, x=109, ответ 109
Перевести число из в Результат: 510 = 1012