Школа программиста

Забыли пароль?
[задачи] [курсы] [олимпиады] [регистрация]
Логин:   Пароль:    
Скрыть меню
О школе
Правила
Олимпиады
Фотоальбом
Гостевая
Форум
Архив олимпиад
Архив задач
Состояние системы
Рейтинг
Курсы
Новичкам
Работа в системе
Курсы ККДП
Дистрибутивы
Статьи
Ссылки


 

Фотограф-псих

(Время: 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.

Разбор: Даньшин Антон

[Обсуждение] [Все попытки] [Задача]


Красноярский краевой Дворец пионеров, (c)2006 - 2025, ИНН 246305493507, E-mail: admin@acmp.ru