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

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

 

 

Бей­сикPython

DIM X, A, B, D AS INTEGER

INPUT X

A = 0: B = 10

WHILE X > 0

    D = X MOD 6

    IF D > A THEN A = D

    IF D < B THEN B = D

    X = X \ 6

WEND

PRINT A+B

 

x = int(input())

a=0; b=10

while x > 0:

    d = x % 6

    if d > a: a = d

    if d < b: b = d

    x = x // 6

print(a+b)

 

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

var x, a, b, d: longint;

begin

    readln(x);

    a := 0; b := 10;

    while x > 0 do begin

        d := x mod 6;

        if d > a then a := d;

        if d < b then b := d;

        x := x div 6;

    end;

    writeln(a+b)

end.

 

алг

нач

    цел x, a, b, d

    ввод x

    a := 0; b := 10

    нц пока x > 0

        d := mod(x,6)

        если d > a то a := d все

        если d < b то b := d все

        x := div(x,6)

    кц

    вывод a+b

кон

 

С++

#include <iostream>

using namespace std;

int main()

{

    int x, a, b, d;

    cin >> x;

    a = 0; b = 10;

    while (x > 0) {

        d = x % 6;

        if (d > a) a = d;

        if (d < b) b = d;

        x = x / 6;

    }

    cout << a+b << endl;

    return 0;

}

 

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

Ре­ше­ние.

За­ме­тим, что a плюс b= 8. Число 8 можно по­лу­чить с по­мо­щью чисел 1 и 7, 2 и 6, 3 и 5, 4 и 4. Сле­до­ва­тель­но, по­сколь­ку не­об­хо­ди­мо найти наи­мень­шее число x, в млад­шем раз­ря­де ко­то­ро­го будет сто­ять цифра 4. Ком­би­на­ции цифр 1 и 7, 2 и 6 не под­хо­дят, по­сколь­ку такое число не может быть пред­став­ле­но в ше­сти­рич­ной си­сте­ме счис­ле­ния.

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

 

Ответ: 4.

 

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

for i in range(1, 10000):

x = i

a = 0

b = 10

while x > 0:

d = x % 6

if d > a: a = d

if d < b: b = d

x = x // 6

if (a + b) == 8:

print(i)

break

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