Ниже на пяти языках программирования записан алгоритм. Получив на вход число x, этот алгоритм печатает числа: a и b. Укажите наибольшее четырехзначное число x, при вводе которого алгоритм печатает сначала 5, а потом 7.
| Бейсик | Python |
|---|---|
DIM X, Y, A, B AS INTEGER A = 10 B = 0 INPUT X WHILE X > 0 Y = X MOD 10 X = X \ 10 IF Y < A THEN A = Y IF Y > B THEN B = Y WEND PRINT A PRINT B
| a = 10 b = 0 x = int(input()) while x > 0: y = x % 10 x = x // 10 if y < a: a = y if y > b: b = y print(a) print(b)
|
| Паскаль | Алгоритмический язык |
var x, y, a, b: integer; begin a := 10; b := 0; readln(x); while x > 0 do begin y := x mod 10; x := x div 10; if y < a then a := y; if y > b then b := y; end; writeln(a); writeln(b) end.
| алг нач цел x, y, a, b a := 10 b := 0 ввод x нц пока x > 0 y := mod(x, 10) x := div(x, 10) если y < a то a := y все если y > b то b := y все кц вывод a, нс, b кон |
| Си++ | |
#include <iostream> using namespace std; int main() { int x, y, a, b; a = 10; b = 0; cin >> x; while (x > 0) { y = x % 10; x = x / 10; if (y < a) a = y; if (y > b) b = y; } cout << a << endl << b << endl; }
| |
Рассмотрим цикл, число шагов которого зависит от изменения переменной x:
while x > 0 do begin
y := x mod 10;
x:= x div 10;
...
end;
Т. к. оператор div возвращает целую часть от деления, то при делении на 10 это равносильно отсечению последней цифры. Следовательно, цикл выполнится четыре раза.
В переменную a записывается остаток от деления числа x на 10 при условии, что этот остаток меньше числа уже записанного в переменной a. В переменную b записывается остаток от деления числа x на 10 при условии, что этот остаток больше числа уже записанного в переменной b. Таким образом, в переменную a записывается наименьшая цифра числа x, а в переменную b — наибольшая. Значит, наибольшее число, удовлетворяющее условию задачи — 7775.
Ответ: 7775.
Приведём другое решение на языке Python.
for i in range(10000, 1, -1):
a = 10
b = 0
x = i
while x > 0:
y = x % 10
x = x // 10
if y < a:
a = y
if y > b:
b = y
if a == 5 and b == 7:
print(i)
break

