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

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

 

 

Бей­сик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 + 1

    END IF

    X = X \ 2

WEND

PRINT L

PRINT M

 

x = int(input())

L = 0

M = 0

while x > 0:

    M = M + 1

    if x % 2 != 0:

        L = L + 1

    x = x // 2

print(L)

print(M)

 

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

var x, L, M: longint;

begin

    readln(x);

    L := 0; M := 0;

    while x > 0 do begin

        M := M + 1;

        if x mod 2 <> 0

            then L := L + 1;

        x := x div 2;

    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 + 1 все

        x := div(x,2)

    кц

    вывод L

    вывод M

кон

 

С++

#include <iostream>

using namespace std;

int main()

{

    int x, L, M;

    cin >> x;

    L = 0; M = 0;

    while (x > 0) {

        M = M + 1;

        if(x % 2 != 0){

            L = L + 1;

        }

        x = x / 2;

    }

    cout << L << endl << M;

}

 

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

Ре­ше­ние.

За­ме­тим, что M= 6. Сле­до­ва­тель­но, не­об­хо­ди­мо найти ше­сти­знач­ное дво­ич­ное число. За­ме­тим, что L= 5. Зна­чит, в 5 раз­ря­дах долж­ны сто­ять еди­ни­цы. По­сколь­ку нам не­об­хо­ди­мо найти наи­мень­шее число, в стар­шем раз­ря­де будет сто­ять еди­ни­ца, а за ней идти ноль. В осталь­ных раз­ря­дах будут сто­ять еди­ни­цы. Таким об­ра­зом, число будет вы­гля­деть так: 1011112  =  4710.

 

Ответ: 47.

 

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

for i in range(1, 10000):

x = i

L = 0

M = 0

while x > 0:

M = M + 1

if x % 2 != 0:

L = L + 1

x = x // 2

if L == 5 and M == 6:

print(i)

break

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