М
Молодежь
К
Компьютеры-и-электроника
Д
Дом-и-сад
С
Стиль-и-уход-за-собой
П
Праздники-и-традиции
Т
Транспорт
П
Путешествия
С
Семейная-жизнь
Ф
Философия-и-религия
Б
Без категории
М
Мир-работы
Х
Хобби-и-рукоделие
И
Искусство-и-развлечения
В
Взаимоотношения
З
Здоровье
К
Кулинария-и-гостеприимство
Ф
Финансы-и-бизнес
П
Питомцы-и-животные
О
Образование
О
Образование-и-коммуникации
Aleksandrik0806
Aleksandrik0806
22.04.2020 02:41 •  Информатика

Получив на вход число 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. В ответе запишите сначала наименьшее число, затем, без пробелов запятых или других дополнительных символов, наибольшее число

👇
Ответ:
katarina10991
katarina10991
22.04.2020
Для решения данной задачи, нам необходимо проанализировать программу и выяснить, как программа определяет значения m и n.

Давайте посмотрим на программу пошагово:

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.
4,4(86 оценок)
Проверить ответ в нейросети
Это интересно:
Новые ответы от MOGZ: Информатика
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ