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

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

 

Бей­сикPython

DIM X, A, B AS INTEGER

INPUT X

A = 0: B = 1

WHILE X > 0

    A = A + X MOD 8

    IF X MOD 2 = 0 THEN

        B = B * (X MOD 8)

    END IF

        X = X \ 8

WEND

PRINT A

PRINT B

 

x = int(input())

a = 0; b = 1

while x > 0:

    a += x % 8;

    if x%2 == 0:

        b *= x % 8

    x = x // 8

print(a, b)

 

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

var x, a, b: integer;

begin

    readln(x);

    a := 0; b := 1;

    while x > 0 do begin

        a := a + x mod 8;

        if x mod 2 = 0 then

            b := b * (x mod 8);

        x := x div 8

    end;

    writeln(a); write(b)

end.

 

алг

нач

    цел x, a, b

    ввод x

    a := 0; b := 1

    нц пока x > 0

        a := a + mod(x,8)

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

            то b := b * mod(x,8)

        все

        x := div(x,8)

    кц

    вывод a, нс, b

кон

 

С++

#include <iostream>

using namespace std;

int main()

{

    int x, a, b;

    cin >> x;

    a = 0; b = 1;

    while (x > 0) {

        a += x % 8;

        if (x%2 == 0) b *= x % 8;

        x = x / 8;

    }

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

    return 0;

}

 

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

Ре­ше­ние.

За­ме­тим, что a  =  14. Зна­чит, сумма цифр ис­ко­мо­го вось­ме­рич­но­го числа равна 14. Число не может быть дву­знач­ным, по­сколь­ку по­лу­чить сумму цифр рав­ную 14 можно толь­ко сло­жив числа 7 и 7, но тогда про­из­ве­де­ние цифр числа будет равно 1. Число также не может быть трёхзнач­ным, по­сколь­ку не­воз­мож­но по­лу­чить од­но­вре­мен­но сумму цифр числа, рав­ную 14 и про­из­ве­де­ние чётных цифр числа, рав­ную 24.

Зна­чит, не­об­хо­ди­мо по­лу­чить четырёхзнач­ное вось­ме­рич­ное число, у ко­то­ро­го про­из­ве­де­ние чётных цифр млад­ших раз­ря­дов равно 24, а сумма всех цифр числа равна 14. Сле­до­ва­тель­но, по­сколь­ку не­об­хо­ди­мо найти наи­мень­шее воз­мож­ное число x, у ко­то­ро­го про­из­ве­де­ние чётных цифр млад­ших раз­ря­дов равно 24, число x долж­но вы­гля­деть так 13468 = 74210.

 

Ответ: 742.

 

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

for i in range(10000):

x = i

a = 0

b = 1

while x > 0:

a += x % 8;

if x % 2 == 0:

b *= x % 8

x = x // 8

if a == 14 and b == 24:

print(i)

break

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