Получив на вход число x, этот алгоритм печатает число M. Известно, что x > 100 (т. е. большее 100). Укажите наименьшее такое (т. е. большее 100) число x, при вводе которого алгоритм печатает 16.
| Паскаль | Си | Python | ||
| var x, L, M: integer; begin readln(x); L := x-16; M := x+16; while L <> M do if L > M then L := L — M else M := M – L; writeln(M); end. |
#include <stdio.h> int main(void) { int x, L, M; scanf(″%d″, &x); L = x-16; M = x+16; while (L != M) { if(L > M) L = L — M; else M = M – L; } printf(″%d″, M); } |
|
Решение:
16 является НОД начальных значений L и M.
L = x-16; M = x+16;
x>100 и делится на 16. Давайте попробуем = 112
L = 112-16 = 96; M = 112+16 = 128
НОД(96, 128)=32 (не подходит)
Следующее число = 128
L = 128-16 = 112; M = 128+16 = 144
НОД(112, 144) = 16 (подходит)
Ответ: 128