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

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

 

C++Python

#include <iostream>

using namespace std;

 

int main()

{

    int a = 0, b = 0, x;

    cin >> x;

    while (x > 0) {

        int c = x % 10;

        a = a + c;

        if(b < c) b = c;

        x = x / 10;

    }

    cout << a << endl << b;

    return 0;

}

x = int(input())

a, b = 0, 0

while x > 0:

    c = x % 10

    a = a + c

    if b < c:

        b = c

    x = x // 10

print(a)

print(b)

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

var x, c, a, b: longint;

begin

    readln(x);

    a := 0; b := 0;

    while x > 0 do begin

        c := x mod 10;

        a := a + c;

        if b < c then b := c;

        x := x div 10;

    end;

    writeln(a);

    write(b);

end.

алг

нач

    цел x, a, b, c

    a := 0

    b := 0

    нц пока x > 0

        c := mod(c, 10)

        a := a + c

        если b < c то

            b := c

        конец если

        x := div(x, 10)

    кц

    вывод a

    вывод b

кон

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

Ре­ше­ние.

Ал­го­ритм пе­ре­би­ра­ет в пе­ре­мен­ной c зна­че­ния раз­ря­дов числа. При­чем в a со­хра­ня­ет­ся сумма всех раз­ря­дов, в b  — мак­си­маль­ное зна­че­ние.

Сле­до­ва­тель­но, мы имеем число с сум­мой раз­ря­дов 10 и мак­си­маль­ным раз­ря­дом 6. Ми­ни­маль­ное число с та­ки­ми ха­рак­те­ри­сти­ка­ми  — 46.

 

Ответ: 46.

 

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

for i in range(10000):

x = i

a = 0

b = 0

while x > 0:

c = x % 10

a = a + c

if b < c:

b = c

x = x // 10

if a == 10 and b == 6:

print(i)

break

Источник: ЕГЭ по ин­фор­ма­ти­ке 24.06.2021. Ос­нов­ная волна
Раздел кодификатора ФИПИ: