Попробуйте взять некоторое неотрицательное целое число, например 8675309, и вычислить абсолютные значения разностей между всеми парами соседних цифр.
Для 8675309
получаем |8-6| = 2
, |6-7| = 1
, |7-5| = 2
, |5-3| = 2
, |3-0| = 3
, |0-9| = 9
. Набирать эти результаты вместе дает другое, меньшее неотрицательное целое число: 212239
. Повторение процесса дает 11016
, тогда 0115
, что согласно соглашению, что ведущие нули не записываются, упрощается как 115
, которое становится 04
или 4
, которое не может быть уменьшено далее. Суммируя все эти значения мы получаем 8675309 + 212239 + 11016 + 115 + 4 = 8898683
.
Давайте определим сумму разности цифр (или DDS) как эту операцию многократного взятия разности цифр числа для формирования нового числа, а затем добавления всех полученных чисел к оригиналу.
Вот первые 20 значений в соответствующей последовательности DDS:
N DDS(N)
0 0
1 1
2 2
3 3
4 4
5 5
6 6
7 7
8 8
9 9
10 11
11 11
12 13
13 15
14 17
15 19
16 21
17 23
18 25
19 27
Вот первые 10000 значений , график которых довольно любопытен:
Тем более, что он выглядит одинаково, когда вы строите его на 1000 или даже 100:
(Я бы назвал это лестницей стоматолога ...)
Вызов
Напишите программу или функцию, которая принимает неотрицательное целое число и печатает или возвращает свое значение DDS. Например, если вход был 8675309
, выход должен быть 8898683
.
Самый короткий код в байтах побеждает.