Python

Выписали все числа от 1 до 2022 подряд..... Помогите решить.

Выписали все числа от 1 до 2022 подряд, посчитали сумму цифр получившегося длинного числа, у полученного числа снова посчитали сумму цифр и так далее, пока не осталось однозначное число. Какое?
Два из трёх предыдущих ораторов гадали, гадали, да так и не угадали.
Всё элементарно вычисляется по признаку делимости на 9 и его следствиям.
Ответ:
 3 

Назовём цифровым корнем сумму, полученную по алгоритму, описанному в задаче: суммируем цифры суммы цифр, затем цифры получившейся суммы и т.д., пока не получим однозначное число.

Цифровой корень числа, делящегося нацело на 9, равен 9 (кроме 0, у которого 0, но нам этот случай неинтересен).
Цифровой корень числа, не делящегося нацело на 9, равен остатку от его деления на 9.
Цифровой корень суммы чисел равен цифровому корню суммы цифровых корней этих чисел (т.е. операция сложения коммутативна с операцией взятия цифрового корня).

Чему равен цифровой корень суммы последовательности из 9 любых подряд идущих чисел? Поскольку мы в ней имеем весь набор остатков от деления 9, сумма этой последовательности делится на 9, и её цифровой корень равен 9.

Поэтому можно спокойно исключить из суммирования все подряд идущие "девятки" чисел, т.е. с 1 по 9, с 10 по 18, и т.д. Последнее делящееся на 9 число = 2016.
Значит, осталось посчитать цифровой корень суммы чисел от 2017 до 2022. Их остатки от деления на 9 образуют последовательность от 1 до 6. Её сумма = 21, а по модулю 9 = 3. Это - и есть ответ.

Но как проверить, что мы не ошиблись в рассуждениях? Говнокодом на Питоне:
 s = ''.join(map(str, range(1, 2023)))
print(s)
n = sum(map(int, s))
while n > 9: n = sum(map(int, str(n)))
print(n)
Dmitri Pavlov
Dmitri Pavlov
87 571
Лучший ответ
Эдик Зайнуллин У меня получается сумма значений цифр в ряду, полученном из натурального ряда от 1 до 2022 записанных подряд, равна 44305. То есть ответ 7
6
Эдик Зайнуллин
Эдик Зайнуллин
70 990
2
Fike )))
Fike )))
83 071
3

 start = 1 
end = 2022
s = ''

for n in range(start, end + 1):
s += str(n)

length1 = str(sum([int(i) for i in s]))
print(length1) # 28155

length2 = str(sum([int(i) for i in length1]))
print(length2) # 21

length3 = str(sum([int(i) for i in length2]))
print(length3) # 3
Smail Of Smail
Smail Of Smail
73 465