100000! содержит "всего" 456574 цифр, так что по крайней мере имеет смысл попытаться начать решать задачу.
Вот наивный алгоритм, который вычисляет факториал по определению (n! = 1 * 2 * 3 * ... * n):
Код (Python 3):
prod = 1
for i in range(1, 100000 + 1):
prod *= i
Количество нулей в конце в числе prod можно найти, например, так (результат находится в переменной count):
Код (Python 3):
count = 0
while prod % 10 == 0:
count += 1
prod //= 10
Наконец, проверим, сколько времени считался результат. Импортируем из модуля time функцию perf_counter, запустим её в начале программы и в конце. Разность результатов - время работы программы в секундах.
Итого получаем такую программу:
Код (Python 3):
from time import perf_counter
start = perf_counter()
prod = 1
for i in range(1, 100000 + 1):
prod *= i
print(prod)
count = 0
while prod % 10 == 0:
count += 1
prod //= 10
print(count)
end = perf_counter()
print(end - start)
Вывод полностью приводить не буду, скажу только, что вычисление на моём компьютере заняло меньше 15 секунд.
Поделитесь своими знаниями, ответьте на вопрос:
№1. Дано четырехзначное число. Напишите программу, которая определяет: есть ли среди цифр заданного целого четырехзначного числа цифра, равная заданной цифре. №2. Даны три точки в прямоугольной системе координат. Напишите программу, определяющую, которая из первых двух точек находится ближе к третьей точке.
Таблицы "Успеваемости" типа «объект—объект»
Ученик Русский Алгебра Химия Физика История Музыка
Аликин Петр 4 5 5 4 4 5
Ботов Иван 3 3 3 3 3 4
Волков Илья 5 5 5 5 5 5
Галкина Нина 4 4 5 2 4 4
Строки относятся к ученикам — это первый вид объектов; столбцы — к школьным предметам — второй вид объектов. В каждой клетке на пересечении строки и столбца — оценка, полученная данным учеником по данному предмету.