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

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

 

C++Python

#include <iostream>

using namespace std;

 

int main()

{

    int x, a, b, d;

    cin >> x;

    a = 1;

    b = 0;

    while (x > 0) {

        d = x%9;

        a *= d;

        if (d < 5)

            b += d;

        x /= 9;

    }

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

    return 0;

}

x = int(input())

a = 1

b = 0

while x > 0:

    d = x%9

    a *= d

    if d < 5:

        b += d

    x //= 9

print(a, b)

 

 

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

var x, a, b, d: integer;

begin

    readln(x);

    a := 1;

    b := 0;

    while x > 0 do begin

        d := x mod 9;

        a := a * d;

        if d < 5 then

            b := b + d;

        x := x div 9

    end;

    writeln(a, ' ', b)

end.

 

алг

нач

    цел x, a, b, d

    ввод x

    a := 1

    b := 0

    нц пока x > 0

        d := mod(x,9)

        a := a * d

        если d < 5

            то b := b + d

        все

    кц

    вывод a, ' ', b, нс

кон

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

Ре­ше­ние.

Не­об­хо­ди­мо по­лу­чить де­вя­те­рич­ное число, про­из­ве­де­ние цифр ко­то­ро­го равно 10, а сумма цифр этого числа, мень­ших 5, равна 9. Число 10 можно по­лу­чить про­из­ве­де­ни­ем чисел 2 и 5. По­сколь­ку не­об­хо­ди­мо найти наи­боль­шее число, число 9 можно по­лу­чить сум­мой двой­ки и семи цифр «1». Таким об­ра­зом, в де­вя­те­рич­ной си­сте­ме счис­ле­ния число будет вы­гля­деть как 5211111119. В де­ся­тич­ной си­сте­ме счис­ле­ния это число равно 225397414.

 

Ответ: 225397414.

 

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

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

x = i

a = 1

b = 0

while x > 0:

d = x % 9

a *= d

if a > 10 or d == 0: # доп про­вер­ка, чтобы уско­рить ал­го­ритм

break

if d < 5:

b += d

if b > 9: # доп про­вер­ка, чтобы уско­рить ал­го­ритм

break

x //= 9

if a == 10 and b == 9:

print(i)

break