Фотограф-псих
(Время: 1 сек. Память: 16 Мб Сложность: 43%)
Задача сводится к нахождению N из уравнения N! = F. Решение основано на том факте, что длина натурального числа a, записанного в k-ичной системе счисление равно [logk a]+1.
Заметим, что для N больших 6, длина числа меняется как минимум на единицу. Отсюда следует несложный алгоритм решения. Считываем исходное число как строку. Если длина строки меньше 4 (7! = 5040), то преобразуем его в число и определим значение факториала перебором. В противном случае будем действовать следующим образом.
Воспользуемся свойством логарифма: lg(N!)=lg1+lg2+...+lgN.
Пусть длина исходного числа F равна len. Заведем переменную lg вещественного типа, в которой будем хранить текущее значение lg(i!). Начальное значение lg равно 0. В цикле по i, начиная с 2, будем прибавлять к текущему значению lg величину десятичного логарифма i. Выход из цикла произведем по условию [lg]+1=len.
Разбор: Даньшин Антон
|