C. Инверсия 0 Имя входного файла стандартный ввод Имя выходного файла стандартный вывод...

0 голосов
96 просмотров

C. Инверсия 0 Имя входного файла стандартный ввод Имя выходного файла стандартный вывод Ограничение по времени 2 секунды Ограничение по памяти 64 мегабайта Необходимо реализовать функцию, которая для заданного целого числа меняет порядок цифр в нем на обратный. Продемонстрировать работу процедуры на 5 целых числах. Формат входных данных С клавиатуры вводятся через пробел 5 целых положительных чисел, не превосходящих 109. Формат выходных данных Необходимо вывести через пробел 5 чисел — измененные исходные числа. Примечания Если у нового числа есть ведущие нули — выводить их не нужно. Примеры входные данные выходные данные 31 1 294 421 1122 13 1 492 124 2211


Информатика (26 баллов) | 96 просмотров
Дан 1 ответ
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.

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

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

(3.7k баллов)