Ниже на пяти языках программирования записан алгоритм. Получив на вход число x, этот алгоритм печатает числа: a и b. Укажите наименьшее положительное пятизначное число x, при вводе которого алгоритм печатает сначала 6, а потом 3.
| Бейсик | Python |
|---|---|
DIM X, Y, A, B AS INTEGER A = 0 B = 10 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 = 0 b = 10 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: longint; begin a := 0; b := 10; 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 := 0 b := 10 ввод 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 = 0; b = 10; 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 — наименьшая. Значит, наименьшее число, удовлетворяющее условию задачи — 33336.
Ответ: 33336.
Приведём другое решение на языке Python.
for i in range(10000, 100000):
x = i
a = 0
b = 10
while x > 0:
y = x % 10
x = x // 10
if y > a:
a = y
if y < b:
b = y
if a == 6 and b == 3:
print(i)
break


при вводе 36, программа выдаёт , что требуется, а число "36" явно меньше "33336"
Здравствуйте! По условию задачи, число должно быть пятизначным.
Число 36 подходит. Нигде нет условия, обеспечивающего пятиразрядное число на вводе
Здравствуйте! Это ограничение указано в условии задачи: "Укажите наименьшее положительное пятизначное..."