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

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

 

Бей­сикPython

DIM X, L, M AS INTEGER

INPUT X

L = X

M = 65

IF L MOD 2 = 0 THEN

    M = 52

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 = 65

if L % 2 == 0:

    M = 52

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 := 65;

    if L mod 2 = 0 then

        M := 52;

    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 := 65

    если mod(L,2)=0

        то

            M := 52

    все

    нц пока 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 = 65;

    if (L % 2 == 0)

        M = 52;

    while (L != M){

        if(L > M)

            L = L - M;

        else

            M = M - L;

    }

    cout << M << endl;

}

Спрятать решение

Ре­ше­ние.

В теле цикла числа M и L умень­ша­ют­ся, пока не ста­нут рав­ны­ми. Чтобы в итоге было на­пе­ча­та­но 26, оба числа в какой-то мо­мент долж­ны быть равны 26. Пой­дем от конца к на­ча­лу: на преды­ду­щем шаге одно число было 26, а дру­гое 26 + 26 = 52. Еще на шаг рань­ше 52 + 26 = 78 и 52. До того 78 + 52 = 130 и 52. То есть наи­мень­шее воз­мож­ное число 130. А по­сколь­ку най­ден­ное число чет­ное, то M будет при­сво­е­но зна­че­ние 52, что и при­ве­дет к не­об­хо­ди­мо­му ре­зуль­та­ту.

 

Ответ: 130.

 

При­ве­дем дру­гое ре­ше­ние.

За­ме­тим, что ис­поль­зу­е­мый в про­грам­ме цикл пред­став­ля­ет собой на­хож­де­ние наи­боль­ше­го об­ще­го де­ли­те­ля чисел M и L. Этот наи­боль­ший общий де­ли­тель дол­жен быть равен 26. Если число L чет­ное, то на­хо­дит­ся наи­боль­ший общий де­ли­тель чисел L и 52. Наи­мень­шее чет­ное число, ко­то­рое боль­ше 100 и при этом де­лит­ся на 26, равно 130. Если же L не­чет­ное, то на­хо­дит­ся наи­боль­ший общий де­ли­тель чисел L и 65, но он не может быть равен 26, по­сколь­ку 65 не де­лит­ся на 26. Сле­до­ва­тель­но, число L равно 130.

 

При­ведём дру­гое ре­ше­ние на языке Python.

for i in range(100, 1000):

x = i

L = x

M = 65

if L % 2 == 0:

M = 52

while L != M:

if L > M:

L = L - M

else:

M = M - L

if M == 26:

print(i)

break


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

Источник: Де­мон­стра­ци­он­ная вер­сия ЕГЭ—2016 по ин­фор­ма­ти­ке
Раздел кодификатора ФИПИ: