Данил Душистов: «Решение 50 типовых задач по программированию на языке Pascal»
37
1.
program ReverseOfN;
2.
3.
var
4.
r, n: word;
5.
6.
begin
7.
readln(n);
8.
r := 0;
9.
while n <> 0
do begin
10.
r := r * 10;
11.
r := r + n mod 10;
12.
n := n div 10
13.
end;
14.
writeln(r)
15.
end.
Задача № 32. Проверить монотонность последовательности цифр числа
Формулировка. Дано натуральное число
n. Проверить, представляют его ли цифры его вось-
меричной записи строго монотонную последовательность. При этом последовательность из одной
цифры считать строго монотонной.
Примечание: в математике строго возрастающие и строго убывающие
последовательности
называются строго монотонными. В строго возрастающей последовательности каждый следующий
член
больше предыдущего. Например: 1, 3, 4 ,7, 11, 18. В строго убывающей последовательности
каждый следующий член
меньше предыдущего. Например: 9, 8, 5, 1.
Решение. Здесь нам нужно будет последовательно получить разряды восьмеричной записи
числа, двигаясь по записи числа справа налево. Как мы уже знаем, последний разряд числа в вось-
меричной системе счисления есть остаток от деления этого числа на 8.
Попытаемся определить несколько общих свойств строго возрастающих (обозначим пример
как 1) и строго убывающих (обозначим как 2) последовательностей (для наглядности будем сразу
брать восьмеричные последовательности):
1) 3, 4, 5, 8, 9, 11.
2) 8, 7, 3, 2, 0.
Для начала введем в рассмотрение некоторую формулу, обозначим ее как (I):
delta
i
= a
i
– a
i+1
,
где
a
i
–
член заданной последовательности с индексом
i. Нетрудно понять, что эта формула
определяет разность между двумя соседними элементами: например, если
i = 5 (то есть, мы рассмат-
риваем пятую разность), то формула будет выглядеть так:
delta
5
= a
5
– a
6
.
При этом стоит учитывать
множество всех значений, которые может принимать
i. Например, для последовательности (1)
i мо-
жет принимать значения от 1 до 5 включительно, для последовательности (2) – от 1 до 4 включи-
тельно. Легко проверить, что для всех других
i формула (I) не имеет смысла, так как в ней должны
участвовать несуществующие члены последовательности.
Найдем все
delta
i
для последовательности (1):
delta
1
= 3 – 4 = –1,
delta
2
= 4 – 5 = –1,
delta
3
= 5
– 8 = –3,
delta
4
= 8 – 9 = –1,
delta
5
= 9 – 11 = –2.
Как видим, они все отрицательны. Нетрудно догадаться, что это свойство сохраняется для всех
строго возрастающих последовательностей.
Выпишем все
delta
i
для последовательности (2), не расписывая при этом саму формулу: 1, 4,
1, 2.
Видим, что все они положительны.