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

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

 

C++Python

#include <iostream>

using namespace std;

 

int main()

{

    int x, a, b;

    cin >> x;

    a = 0; b = 0;

    while (x > 0) {

        ++a;

        if (x % 2 == 0)

            b += x % 100;

        x /= 10;

    }

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

    return 0;

}

x = int(input())

a = 0; b = 0

while x > 0:

    a += 1

    if x % 2 == 0:

        b += x % 100

    x //= 10

print(a, b)

 

 

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

var x, a, b: integer;

begin

    readln(x);

    a := 0; b := 0;

    while x > 0 do begin

        a := a + 1;

        if x mod 2 = 0 then

            b := b + x mod 100;

        x := x div 10

    end;

    writeln(a, ' ', b)

end.

 

алг

нач

    цел x, a, b

    ввод x

    a := 0; b := 0

    нц пока x > 0

        a := a + 1

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

            то b := b + mod(x,100)

        все

        x := div(x,10)

    кц

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

кон

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

Ре­ше­ние.

За­ме­тим, что не­об­хо­ди­мо по­лу­чить четырёхзнач­ное де­ся­те­рич­ное число. Решим за­да­чу пе­ре­бо­ром с по­мо­щью языка про­грам­ми­ро­ва­ния PascalABC.

var x, a, b, i, max: integer;

begin

max := 0;

for i := 1000 to 9999 do begin

x := i;

a := 0; b := 0;

while x > 0 do begin

a := a + 1;

if x mod 2 = 0 then

b := b + x mod 100;

x := x div 10;

end;

if (a = 4) and (b = 160) then begin

max := i;

end;

end;

writeln(max);

end.

Ре­зуль­тат ра­бо­ты про­грам­мы  — 9964.

 

Ответ: 9964.

 

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

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

x = i

a = 0

b = 0

while x > 0:

a += 1

if x % 2 == 0:

b += x % 100

x //= 10

if a == 4 and b == 160:

print(i)

break