В результате выполнения фрагмента программы while n <> 0 do begin write ( 2*(n mod 5 + 3) ); n...

Тематика Информатика
Уровень 10 - 11 классы
программирование алгоритмы цикл while арифметические операции преобразование числа нечетные цифры
0

В результате выполнения фрагмента программы while n <> 0 do begin write ( 2*(n mod 5 + 3) ); n := n div 10; end; на экран выведено число 10614. Какое число хранилось до этого в переменной n, если известно, что все цифры в нем нечетные?

avatar
задан 21 день назад

2 Ответа

0

Для решения данной задачи необходимо взять каждую цифру из числа 10614 и выполнить обратные действия программы, чтобы найти исходное число, которое хранилось в переменной n.

Итак, начнем:

  1. Последняя цифра числа 10614 - это 4. Из выражения 2*(n mod 5 + 3) = 4 получаем, что n mod 5 + 3 = 2. Таким образом, n mod 5 = -1. Но так как n - неотрицательное число, n mod 5 = 4.

  2. Следующая цифра - 1. Теперь n = n div 10 = 1061. Из выражения 2*(n mod 5 + 3) = 1 получаем, что n mod 5 + 3 = 1. Таким образом, n mod 5 = -2, но так как n - неотрицательное число, n mod 5 = 3.

  3. Далее цифра 6. Теперь n = n div 10 = 106. Из выражения 2*(n mod 5 + 3) = 6 получаем, что n mod 5 + 3 = 3. Таким образом, n mod 5 = 0.

  4. Следующая цифра - 1. Теперь n = n div 10 = 10. Из выражения 2*(n mod 5 + 3) = 1 получаем, что n mod 5 + 3 = 1. Таким образом, n mod 5 = -2, но так как n - неотрицательное число, n mod 5 = 3.

  5. И последняя цифра - 0. Теперь n = n div 10 = 1. Из выражения 2*(n mod 5 + 3) = 0 получаем, что n mod 5 + 3 = 0. Таким образом, n mod 5 = -3, но так как n - неотрицательное число, n mod 5 = 2.

Итак, исходное число, которое хранилось в переменной n, составляет 10362.

avatar
ответил 21 день назад
0

Для решения задачи необходимо понять, как работает данный фрагмент программы и как он преобразует число, хранящееся в переменной n.

Фрагмент программы выполняет следующие действия в цикле while, пока n не станет равным 0:

  1. Вычисляет остаток от деления n на 5: n mod 5.
  2. К результату прибавляет 3 и умножает на 2: 2 * (n mod 5 + 3).
  3. Выводит полученное значение на экран.
  4. Делит n на 10, отбрасывая последнюю цифру: n := n div 10.

Цикл продолжается, пока n не станет равным 0, и на каждом шаге выводится одно число.

Известно, что на экран было выведено число 10614. Мы предполагаем, что каждая цифра числа 10614 соответствует результату одного цикла выполнения программы, начиная с младшей цифры. То есть порядок вывода чисел обратный.

Давайте рассмотрим каждую цифру числа 10614 и выясним, каким остатком от деления на 5 она могла быть получена, учитывая, что все цифры в n нечетные:

  1. Цифра 4: ((2 (n mod 5 + 3) = 4))
    (\Rightarrow n mod 5 + 3 = 2)
    (\Rightarrow n mod 5 = -1), что невозможно. Похоже, здесь ошибка: 4 не может быть результатом выражения (2
    (n mod 5 + 3)) для неотрицательных остатков. Попробуем другую цифру.

  2. Цифра 1: ((2 * (n mod 5 + 3) = 1))
    (\Rightarrow n mod 5 + 3 = 0.5), что также невозможно.
    Вероятно, ошибка с порядком цифр: начнем с конца.

Теперь определим цифры, которые могут соответствовать нечетным остаткам и проверим их:

  1. Цифра 4: ((2 * (n mod 5 + 3) = 14))
    (\Rightarrow n mod 5 + 3 = 7)
    (\Rightarrow n mod 5 = 4). Цифра 9 подходит, так как 9 mod 5 = 4.

  2. Цифра 1: ((2 * (n mod 5 + 3) = 6))
    (\Rightarrow n mod 5 + 3 = 3)
    (\Rightarrow n mod 5 = 0). Цифра 5 подходит, так как 5 mod 5 = 0.

  3. Цифра 6: ((2 * (n mod 5 + 3) = 12))
    (\Rightarrow n mod 5 + 3 = 6)
    (\Rightarrow n mod 5 = 3). Цифра 3 подходит, так как 3 mod 5 = 3.

  4. Цифра 0: ((2 * (n mod 5 + 3) = 10))
    (\Rightarrow n mod 5 + 3 = 5)
    (\Rightarrow n mod 5 = 2). Цифра 7 подходит, так как 7 mod 5 = 2.

  5. Цифра 1: ((2 * (n mod 5 + 3) = 6))
    (\Rightarrow n mod 5 + 3 = 3)
    (\Rightarrow n mod 5 = 0). Цифра 5 подходит, так как 5 mod 5 = 0.

Таким образом, число, которое хранилось в переменной n, это 75395.

avatar
ответил 21 день назад

Ваш ответ

Вопросы по теме