Точно и четко сформулировать условие задачи, которая решается в данной программе: Program...

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

Точно и четко сформулировать условие задачи, которая решается в данной программе:
Program Kr_2_3;
Var N, St : LongInt;
Begin
Write('Введите натуральное число: ');
ReadLn(N);
St := 1;
While N Div St <> 0 Do
If Not Odd(N Mod (St * 10) Div St)
Then N := N Div (St * 10) * St + N Mod St
Else St := St * 10;
WriteLn('Ответ: ', N);
End.

Задать натуральное число N и указать, каким оно станет после преобразования.


Информатика (851 баллов) | 76 просмотров
Дан 1 ответ
0 голосов
Правильный ответ

Программа для введённого с клавиатуры числа N выводит число, составленное из нечётных цифр десятичной записи числа N. Если в записи N нет ни одной нечётной цифры, выводится 0. Если N < 0, выводится что-то жуткое.

St - в любой момент степень 10, пусть St = 10^k. Тогда N Mod (St * 10) Div St получает (k + 1)-ую цифру справа в десятичной записи числа N. Затем, если она чётная, то вместо N рассматривается число N Div (St * 10) * St + N Mod St - число, получаемое из N вычитанием (k + 1)-й цифры. Если нечетное - берется следующее k.

Например, для N = 1234567 будет выведено "Ответ: 1357", а для N = 24680 будет выведено "Ответ: 0".

(148k баллов)