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

0 голосов
148 просмотров

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

var x, a, b: integer;
begin readln(x); a := 0; b := 1;
while x > 0 do begin a := a+1;
b := b*(x mod 100);
x := x div 100;
end;
writeln(a);
write(b);
end.


Информатика (15 баллов) | 148 просмотров
Дан 1 ответ
0 голосов
Правильный ответ

Procedure GetAB(x: integer; var a: integer; var b: integer);
begin
    a := 0;
    b := 1;
    while x > 0 do
    begin
        a := a + 1;
        b := b * (x mod 100);
        x := x div 100;
    end;
end;

var
    x, a, b: integer;

begin
    for x := 10000 to 2000000000 do
    begin
        GetAB(x, a, b);
        if (a = 3) and (b = 18) then
            Println(a, b, x);
    end;
end.

выдает такие значения
3 18 10118
3 18 10209
3 18 10306
3 18 10603
3 18 10902
3 18 11801
3 18 20109
3 18 20303
3 18 20901
3 18 30106
3 18 30203
3 18 30302
3 18 30601
3 18 60103
3 18 60301
3 18 90102
3 18 90201
3 18 180101

Выделенное наибольшее

(53.1k баллов)
0

//PascalABC.NET 3.1 сборка 1219