Форум сайта python.su
Задача 5: Долгое вычитание, Карл!
Карл Гаусс известен тем, что в юные годы сумел быстро решить задачку своего учителя, которую тот предложил ученикам, чтобы занять их на продолжительное время: найти сумму всех натуральных чисел от 1 до 100.
Говорят, что сразу после этого Карл решил и вторую хитрую задачу, так и не дав своему преподавателю насладиться тишиной на уроке.
Дано натуральное число n. Из него вычитают число, равное длине числа n. Из результата опять вычитают число, равное его длине и так далее. Сколько потребуется операций, чтобы получилось число 0?
Попробуйте и вы справиться с этой задачей.
Входные данные
Программа получает на вход одно натуральное число n (1 ≤ n ≤ 1016).
Обратите внимание, что при заданных ограничениях для хранения ответа необходимо использовать 64-битный тип данных, например long long в C++, int64 в Pascal, long в Java.
Выходные данные
Выведите одно натуральное число — ответ на вопрос задачи.
Система оценки
Решения, верно работающие при 1 ≤ n ≤ 99, получат не менее 20 баллов.
Решения, верно работающие при 1 ≤ n ≤ 105, получат не менее 60 баллов.
Задачу нужно решить за 10 минут
Офлайн
pomogiteludiа что в ней трудного? за 1 минуту решается в лоб банальным перебором в цикле, учитывая что задача по програмированию, а не математике. 9 минут оптмизируем, пытаясь ускорить целочисленным делением, если нужно.
[code python][/code]
Отредактировано PEHDOM (Окт. 29, 2021 13:18:47)
Офлайн
Проверяй.
>>> n = 1016 >>> m = len(str(n)) >>> sum(n % 10**x / x for x in range(1, m+1)) 273
Отредактировано Rodegast (Окт. 29, 2021 15:42:58)
Офлайн