Задания
Версия для печати и копирования в MS Word
Тип Д22 № 10483
i

Ниже на пяти язы­ках про­грам­ми­ро­ва­ния за­пи­сан ал­го­ритм. По­лу­чив на вход число х, этот ал­го­ритм пе­ча­та­ет число М. Из­вест­но, что х > 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


Аналоги к заданию № 9371: 10483 10510 Все

Раздел кодификатора ФИПИ: