Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 29, 2021 06:31:08

pomogiteludi
Зарегистрирован: 2021-10-29
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Очень трудная задачка , посмотрим сможете ли решить? :)

Задача 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 минут

Офлайн

#2 Окт. 29, 2021 13:08:38

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 2196
Репутация: +  294  -
Профиль   Отправить e-mail  

Очень трудная задачка , посмотрим сможете ли решить? :)

pomogiteludiа что в ней трудного? за 1 минуту решается в лоб банальным перебором в цикле, учитывая что задача по програмированию, а не математике. 9 минут оптмизируем, пытаясь ускорить целочисленным делением, если нужно.



==============================
Помещайте код в теги:
[code python][/code]
Бериегите свое и чужое время.

Отредактировано PEHDOM (Окт. 29, 2021 13:18:47)

Офлайн

#3 Окт. 29, 2021 15:39:42

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2742
Репутация: +  183  -
Профиль   Отправить e-mail  

Очень трудная задачка , посмотрим сможете ли решить? :)

Проверяй.

 >>> 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)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version