Задача к ЕГЭ по информатике на тему «программирование – циклы, условия» №2

Ниже приведён алгоритм. Укажите наименьшее из таких чисел x  , большее, чем 200  , при вводе которого алгоритм напечатает 70  .

|---------------|----------------------|---------------------| |Python---------|C-+-+-----------------|Pascal---------------| |x = int(input()) |#include < iostream >  |var x, L, M : longint; |               |                      |                     | |L = 2 ∗x − 30  |void main ()           |begin                 | |M = 2 ∗x+ 40   |{                     |readln(x);            | |while L! = M :  |  int x, L, M ;       |L := 2∗ X − 30;      | |               |                      |                     | |  if L > M  :   |  cin > > x;          |M := 2∗ X + 40;      | |    L = L− M   |  L = 2 ∗x− 30;       |while L <> M  do begin| |  else :        |  M  = 2∗ x+ 40;      |  if L > M  then       | |    M  = M − L |  while (L! = M )      |    L := L − M ;      | |               |                      |                     | |print(M )       |     if (L > M )       |  else                | |               |       L = L− M       |    M  := M  − L;     | |               |     else              |end;                 | |               |                      |                     | |               |       M = M  − L     |writeln(M );          | |               |  cout <<  M ;        |end.                 | |               |}                     |                     | --------------------------------------------------------------

Перед нами Алгоритм Евклида, который ищет НОД(L,M  ). В Алгоритме Евклида L  и M  обязательно должны быть больше нуля, иначе программа уйдёт в бесконечный цикл. Поскольку по условию x  изначально больше 200  , то простой переборный алгоритм не уйдет в бесконечный цикл, но будьте внимательны в подобных задачах.

for i in range(200, 100000):
    x = i
    l = 2*x - 30
    m = 2*x + 40
    while l != m:
        if l > m:
            l -= m
        else:
            m -= l
    if m == 70:
        print(i)
        break

Ответ: 225
Оцените статью
Я решу все!