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

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

 

Бей­сикPython

DIM X, A, B AS INTEGER

INPUT X

A = 0: B = 0

WHILE X > 0

    IF X MOD 2 = 0 THEN

        A = A + 1

    ELSE

        B = B + 1

    END IF

    X = X \ 2

WEND

PRINT A, B

 

x = int(input())

a=0; b=0

while x > 0:

    if x%2 == 0:

        a += 1

    else:

        b += 1

    x = x//2

print(a, b)

 

 

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

var x, a, b: integer;

begin

    readln(x);

    a := 0; b := 0;

    while x > 0 do begin

        if x mod 2 = 0 then

            a := a + 1

        else

            b := b + 1;

        x := x div 2;

    end;

    writeln(a, ' ', b);

end.

 

алг

нач

    цел x, a, b

    ввод x

    a := 0; b := 0

    нц пока x > 0

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

            то a := a + 1

        иначе b := b + 1

        все

        x := div(x,2)

    кц

    вывод a, ' ', b

кон

 

С++

#include <iostream>

using namespace std;

int main()

{

    int x, a, b;

    cin >> x;

    a = 0; b = 0;

    while (x > 0) {

        if (x%2 == 0) ++a;

        else ++b;

        x = x / 2;

    }

    cout << a << ' ' << b << endl;

    return 0;

}

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

Ре­ше­ние.

Дан­ный ал­го­ритм пе­ча­та­ет на вы­хо­де ко­ли­че­ство нулей и еди­ниц в дво­ич­ной за­пи­си числа x.

Най­дем наи­мень­шее число, дво­ич­ная за­пись ко­то­ро­го со­дер­жит 3 нуля и 2 еди­ни­цы  — 100012  =  1710.

 

Ответ: 17.

 

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

for i in range(10000):

x = i

a = 0

b = 0

while x > 0:

if x % 2 == 0:

a += 1

else:

b += 1

x = x // 2

if a == 3 and b == 2:

print(i)

break

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