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

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

 

 

Бей­сикPython

DIM X, A, B AS INTEGER

INPUT X

A = 0: B = 1

WHILE X > 0

    IF X MOD 2 > 0 THEN

        A = A + X MOD 12

    ELSE

        B = B * (X MOD 12)

    END IF

    X = X \ 12

WEND

PRINT A

PRINT B

 

x = int(input())

a=0; b=1

while x > 0:

    if x%2 > 0:

        a += x%12

    else:

        b *= x%12

    x = x // 12

print(a, b)

 

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

var x, a, b: longint;

begin

    readln(x);

    a := 0; b := 1;

    while x > 0 do begin

        if x mod 2 > 0 then

            a := a + x mod 12

        else

            b := b * (x mod 12);

        x := x div 12;

    end;

    writeln(a); write(b);

end.

 

алг

нач

    цел x, a, b

    ввод x

    a := 0; b := 1

    нц пока x > 0

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

            то a := a + mod(x,12)

            иначе b:=b*mod(x,12)

        все x := div(x,12)

    кц

    вывод a, нс, b

кон

 

С++

#include <iostream>

using namespace std;

int main()

{

    int x, a, b;

    cin >> x;

    a = 0; b = 1;

    while (x > 0) {

        if (x%2 > 0)

            a += x%12;

        else

            b *= x%12;

        x = x / 12;

    }

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

    return 0;

}

 

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

Ре­ше­ние.

За­ме­тим, что a = 2, это зна­чит, что число x долж­но 2 раза по­де­лить­ся на 2 c остат­ком, т. е. если число x нечётное, то к числу a при­бав­ля­ет­ся оста­ток от де­ле­ния числа x на 12. Есть толь­ко один ва­ри­ант, как по­лу­чить сумму нечётных цифр, рав­ную 2  — 1 + 1. Сле­до­ва­тель­но, по­сколь­ку не­об­хо­ди­мо найти наи­мень­шее число x, в двух стар­ших раз­ря­дах будут сто­ять еди­ни­цы.

Не­об­хо­ди­мо по­лу­чить две­на­дца­ти­рич­ное число, у ко­то­ро­го про­из­ве­де­ние чётных цифр млад­ших раз­ря­дов равно 10. Сле­до­ва­тель­но, по­сколь­ку не­об­хо­ди­мо найти наи­мень­шее воз­мож­ное число x, у ко­то­ро­го про­из­ве­де­ние чётных цифр млад­ших раз­ря­дов равно 10, число x долж­но вы­гля­деть так 11A12 = 16610.

 

Ответ: 166.

 

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

for i in range(1, 10000):

x = i

a = 0;

b = 1

while x > 0:

if x % 2 > 0:

a += x % 12

else:

b *= x % 12

x = x // 12

if a == 2 and b == 10:

print(i)

break

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