Получив на вход число x, приведённая ниже программа выводит два числа — m и n. var x, m, n: integer;
begin
readln (x);
m:=0;
n:=0;
while x>0 do
begin
if n
m:=m+1;
x:=x div 10;
end;
writeln (m);
write (n)
end.
Известно, что при некотором значении x были выведены числа 3 и 7.
Укажите наибольшее и наименьшее из таких чисел x. В ответе запишите сначала наименьшее число, затем, без пробелов запятых или других дополнительных символов, наибольшее число
Давайте посмотрим на программу пошагово:
1. Сначала у нас есть объявление переменных: x, m, n, которые являются целочисленными переменными.
var x, m, n: integer;
2. Затем программа считывает значение x с помощью команды readln:
readln (x);
3. Затем у нас есть инициализация переменных m и n, в которых обе переменные устанавливаются равными 0:
m:=0;
n:=0;
4. Затем идет цикл while, который продолжается, пока значение x больше 0:
while x>0 do
5. Внутри цикла у нас есть блок if-else, который проверяет остаток от деления числа x на 10:
if n < x mod 10 then
m:=m+1;
Здесь мы сравниваем значение переменной n с остатком от деления числа x на 10. Если остаток больше значения n (изначально равного 0), то увеличиваем значение переменной m на 1.
То есть, каждый раз, когда мы находим число, большее значения n, увеличиваем значение m.
6. В конце каждой итерации цикла мы делим число x на 10, чтобы сдвинуть все его цифры на одну позицию вправо:
x:=x div 10;
7. После того как цикл закончился, на экран выводятся значения переменных m и n:
writeln (m);
write (n);
Известно, что при некотором значении x, значения m и n были равны 3 и 7 соответственно.
Теперь нам нужно выяснить, при каком значении x это возможно.
Для этого должно выполняться условие if n < x mod 10 then m:=m+1.
У нас есть три варианта: либо n < x mod 10, либо n = x mod 10, либо n > x mod 10.
Но заметим, что на каждой итерации n принимает значение x mod 10, только если это значение больше предыдущего значения n.
Из этого следует, что при каждой итерации цикла мы находим новое наибольшее число в числе x. То есть, значения n будут равны наибольшей цифре в числе x.
Таким образом, чтобы получить значение 7 для n, необходимо, чтобы в числе x была цифра 7.
Для получения значения 3 для m, необходимо, чтобы было ровно 3 цифры, которые больше значения n, в числе x. Поскольку у нас в числе x всего одна цифра больше 7, то в остальных случаях будет выполняться условие n < x mod 10.
Теперь определим наименьшее и наибольшее число x.
Наименьшее число x будет таким, что в нем будет только одна цифра больше 7, и остальные цифры будут равны либо меньше 7. Такое число можно представить как 777...78.
Наибольшее число x будет таким, что все его цифры будут равны 7. Такое число можно записать как 777...77.
Итак, ответ на задачу: наименьшее число x равно 777...78, а наибольшее число x равно 777...77.