СДАМ ГИА: РЕШУ ЕГЭ
Образовательный портал для подготовки к экзаменам
Информатика
≡ информатика
сайты - меню - вход - новости




Задания
Версия для печати и копирования в MS Word
Задание 20 № 13550

Ниже на пяти языках программирования записан алгоритм. Получив на вход число x, этот алгоритм печатает число M. Известно, что x > 150. Укажите наименьшее такое (т. е. большее 150) число x, при вводе которого алгоритм печатает 30.

 

БейсикPython

DIM X, L, M AS INTEGER

INPUT X

L = 2*X-30

M = 2*X+30

WHILE L <> M

  IF L > M THEN

    L = L - M

  ELSE

    M = M - L

  END IF

WEND

PRINT M

x = int(input())

L = 2*x-30

M = 2*x+30

while L != M:

  if L > M:

    L = L - M

  else:

    M = M - L

print(M)

ПаскальАлгоритмический язык

var x, L, M: integer;

begin

  readln(x);

  L := 2*x-30;

  M := 2*x+30;

  while L <> M do begin

    if L > M then

      L := L - M

    else

      M := M - L;

  end;

  writeln(M);

end.

алг

нач

    цел x, L, M

    ввод x

    L := 2*x-30

    M := 2*x+30

    нц пока 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 = 2*x-30;

    M = 2*x+30;

    while (L != M) {

      if (L > M)

        L = L - M;

      else

        M = M - L;

    }

    cout « M « endl;

    return 0;

}

 

Решение.

Пока L !=M, вычитаем из большего меньшее. Первое действие 2*x + 30 − (2*x − 30), и тогда M станет равно 60. Далее (т. к. 2*x − 30 > 60 по условию) L станет равно 2*x − 90. Далее имеем 2*x − 150, 2*x − 210, 2*x − 270. Теперь L возможно станет меньше M. Поскольку M должно быть 30, значит, 2*x − 270 = 30, тогда x = 150, что не подходит по условию. Значит, 2*x − 330 = 30, т. е. x = 180.

 

Ответ: 180.

Источник: Тренировочная работа по ИНФОРМАТИКЕ 11 класс 30 сентября 2016 года Вариант ИН10103