Это не вопрос домашней работы. Я просто подумал, что кто-то может знать реальное решение этой проблемы.
Я был на конкурсе программирования еще в 2004 году, и была эта проблема:
Учитывая n, найдите сумму цифр n!. n может быть от 0 до 10000. Ограничение по времени: 1 секунда. Я думаю, что для каждого тестового набора было до 100 номеров.
Мое решение было довольно быстрым, но не достаточно быстрым, поэтому я просто позволяю ему работать некоторое время. Он построил массив предварительно рассчитанных значений, которые я мог бы использовать в своем коде. Это был взлом, но он сработал.
Но был парень, который решил эту проблему примерно с 10 строками кода, и он дал бы ответ в кратчайшие сроки. Я считаю, что это было какое-то динамическое программирование или что-то вроде теории чисел. В то время нам было 16, поэтому это не должно быть "ракетной наукой".
Кто-нибудь знает, какой алгоритм он мог бы использовать?
РЕДАКТИРОВАТЬ: Извините, если я не поставил вопрос ясно. Как сказал mquander, должно быть умное решение, без bugnum, с простым кодом Паскаля, пара петель, O (n 2) или что-то в этом роде. 1 секунда больше не является ограничением.
Я нашел здесь, что если n > 5, то 9 делит сумму цифр факториала. Мы также можем найти количество нулей в конце номера. Можем ли мы это использовать?
Хорошо, еще одна проблема из конкурса программирования из России. Учитывая 1 <= N < 2 000 000 000, выход N! mod (N + 1). Это как-то связано?