8926. Замена четности

 

Задано натуральное число n. Увеличьте на 1 все его четные цифры и уменьшите на 1 все его нечетные цифры.

 

Вход. Одно натуральное число n (n 109).

 

Выход. Выведите обновленное число.

 

Пример входа

Пример выхода

983210

892301

 

 

РЕШЕНИЕ

циклы

 

Анализ алгоритма

Переберем цифры числа n. Изменим каждую цифру согласно требованию задачи. Построим обновленное число.

 

Пример

Пусть n = 9832. Последовательно делим его на 10, выделяем последнюю цифру. Изменяем ее и дописываем перед результатом res. В переменной p перебираем степени числа 10.

На каждой итерации после изменения последней цифры d = n % 10 производится операция res = res + d * p.

 

Реализация алгоритма

Читаем входное значение n.

 

scanf("%d", &n);

 

В переменной res строим новое число. В переменной p перебираем степени числа 10: 1, 10, 100, … .

 

res = 0; p = 1;

 

Перебираем цифры числа n.

 

while (n > 0)

{

 

Выделяем последнюю цифру d числа n. Изменяем ее согласно условию задачи.

 

  d = n % 10;

  if (d % 2 == 0) d++; else d--;

 

Ставим обновленную цифру d в соответствующую позицию результата.

 

  res = res + d * p;

 

Пересчитываем значения p и n.

 

  p *= 10; n /= 10;

}

 

Выводим результат.

 

printf("%d\n", res);