Информатика, вопрос задал 05kostman05 , 7 лет назад

C. Инверсия
0
Имя входного файла
стандартный ввод
Имя выходного файла
стандартный вывод
Ограничение по времени
2 секунды
Ограничение по памяти
64 мегабайта
Необходимо реализовать функцию, которая для заданного целого числа меняет порядок цифр в нем на обратный. Продемонстрировать работу процедуры на 5 целых числах.

Формат входных данных
С клавиатуры вводятся через пробел 5 целых положительных чисел, не превосходящих 109.
Формат выходных данных
Необходимо вывести через пробел 5 чисел — измененные исходные числа.
Примечания
Если у нового числа есть ведущие нули — выводить их не нужно.

Примеры
входные данные выходные данные
31 1 294 421 1122
13 1 492 124 2211

Ответы на вопрос

Ответил DexelGamer
0

Алгоритм решения

Для каждого числа будем убирать последнюю цифру, пока число не станет нулём. При этом для очередной последней цифры ответ умножаем на 10 и прибавляем к нему эту цифру.

Для одного числа алгоритм будет выглядеть так:

while x > 0:

   ans = ans * 10 + (x mod 10)

   x = x // 10

Где x - заданное число, ans - ответ на задачу (перевёрнутое число), mod - операция получения остатка, // - операция целочисленного деления.

Формально, x mod 10 возвращает последнюю цифру числа x ("остаток от деления x на 10"), а x // 10 возвращает число x без последней цифры ("разделить x на 10 и отбросить остаток").


Решение (Pascal)

var

 x, i, ans: integer;


begin

 for i := 1 to 5 do

 begin

   read(x);

   ans := 0;

   while (x > 0) do

   begin

     ans := ans * 10 + (x mod 10);

     x := x div 10;

   end;

   write(ans, ' ');

 end;

 writeln;

end.

----------------------------

Файл решения прикреплён.

Приложения:
Новые вопросы