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

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

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

 

Бей­сик Python

DIM X, Y, A, B AS INTEGER

A = 0

B = 0

INPUT X

WHILE X > 0

    Y = X MOD 10

    IF Y > 3 THEN A = A + 1

    IF Y < 8 THEN B = B + 1

    X = X \ 10

WEND

PRINT A

PRINT B

a = 0

b = 0

x = int(input())

while x > 0:

    y = x % 10

    if y > 3:

        a = a+1

    if y < 8:

        b = b+1

    x = x // 10

print(a)

print(b)

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

алг

нач

    цел x, y, a, b

    a := 0

    b := 0

    ввод x

    нц пока x > 0

        y := mod(x, 10)

        если y > 3

            то a := a + 1

        все

        если y < 8

            то b := b + 1

        все

        x := div(x, 10)

    кц

    вывод a, нс, b

кон

var x, y, a, b: integer;

begin

    a := 0;

    b := 0;

    readln(x);

    while x > 0 do

    begin

        y := x mod 10;

        if y > 3 then

            a := a + 1;

        if y < 8 then

            b := b + 1;

        x := x div 10

    end;

    writeln(a);

    writeln(b)

end.

Си++

#include <iostream>

using namespace std;

int main()

{

    int x, y, a, b;

    a = 0;

    b = 0;

    cin >> x;

    while (x > 0)

    {

        y = x % 10;

        if (y > 3)

            a = a + 1;

        if (y < 8)

            b = b + 1;

        x = x / 10;

    }

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

}

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

Ре­ше­ние.

Число a  — ко­ли­че­ство цифр в числе, боль­ших 3.

Число b  — ко­ли­че­ство цифр в числе, мень­ших 8.

Таким об­ра­зом, по­лу­ча­ет­ся 1 цифра мень­ше 4, цифра от 4 до 7 и 3 цифры боль­ше 7.

Под­би­рая для каж­дой из цифр ми­ни­маль­ное зна­че­ние и от­сор­ти­ро­вав эти цифры в по­ряд­ке воз­рас­та­ния, по­лу­чим ми­ни­маль­ное число 14888.

 

Ответ: 14888.

 

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

for i in range(10000, 100000):

x = i

a = 0

b = 0

while x > 0:

y = x % 10

if y > 3:

a = a + 1

if y < 8:

b = b + 1

x = x // 10

if a == 4 and b == 2:

print(i)

break


Аналоги к заданию № 8668: 9172 Все

Раздел кодификатора ФИПИ:
Виктор Зеленков 04.04.2016 19:39

Ваш ответ не­вер­ный. Пра­виль­ный 4488.

По­яс­не­ние a = кол-ву цифр > 3

b = кол-ву цифр <8

т. к. a = 4, то цифр боль­ше 3 - че­ты­ре

т. к. b = 2, то цифр мень­ше 8 - две

4488

под­хо­дит под это усло­вие. Также про­ве­рил на он­лайн ком­пи­ля­то­ре. Под­хо­дит.

Никита Горохов

Не­об­хо­ди­мо предъ­явить наи­мень­шее пя­ти­знач­ное число.