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

Ниже на пяти язы­ках про­грам­ми­ро­ва­ния за­пи­сан ал­го­ритм. По­лу­чив на вход число на­ту­раль­ное де­ся­тич­ное x, этот ал­го­ритм пе­ча­та­ет два числа: L и M. Ука­жи­те наи­боль­шее число x, при вводе ко­то­ро­го ал­го­ритм пе­ча­та­ет сна­ча­ла 2, а потом 3.

 

Бей­сикPython

DIM X, L, M AS INTEGER

INPUT X

L = 0

M = 0

WHILE X > 0

    M = M + 1

    IF X MOD 2 <> 0 THEN

        L = L + X MOD 8

    ENDIF

    X = X \ 8

WEND

PRINT L

PRINT M

x = int(input())

L = 0

M = 0

while x > 0 :

    M = M+1

     if (x % 2) != 0:

         L = L + x % 8

     x = x // 8

print(L)

print(M)

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

var x, L, M: integer;

begin

    readln(x);

    L:=0; M:=0;

    while x > 0 do begin

        M:=M + 1;

        if (x mod 2) <> 0 then

            L:= L + x mod 8;

        x:= x div 8;

    end;

    writeln(L); write(M);

end.

алг

нач

     цел x, L, M

     ввод x

     L := 0

     M := 0

    нц пока x > 0

        M := M + 1

         если mod(x,2) <> 0

            то

             L:= L + mod (x,8);

        x := div(x,8)

        все

     кц

     вывод L, нс, M

кон

Си++

#include <iostream>

using namespace std;

 

int main(void) {

    int L, M, x;

    cin >> x;

     L = 0; M = 0;

    while (x > 0) {

         M = M + 1;

        if (x % 2 != 0) {

             L = L + x % 8;

        }

        x = x / 8;

    }

     cout << L << “ “ << M;

}

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

Ре­ше­ние.

Не­об­хо­ди­мо по­лу­чить наи­боль­шее трёхзнач­ное вось­ме­рич­ное число, у ко­то­ро­го сумма цифр двух раз­ря­дов равна 2, а тре­тий раз­ряд не удо­вле­тво­рял усло­вию (x mod 2) <> 0. Сле­до­ва­тель­но, две пер­вые цифры вы­гля­дят так: 11. А ну­ле­вой раз­ряд дол­жен быть таким, чтобы усло­вие (x mod 2) <> 0 не вы­пол­ня­лось, а, зна­чит, вто­рой раз­ряд равен 6. Сле­до­ва­тель­но, число, ко­то­рое мы ищем 6118 = 39310.

 

Ответ: 393.

 

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

for i in range(10000, 0, -1):

x = i

L = 0

M = 0

while x > 0:

M = M + 1

if (x % 2) != 0:

L = L + x % 8

x = x // 8

if L == 2 and M == 3:

print(i)

break

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