Пожалуйста, подпишитесь на официальный канал Codeforces в Telegram по ссылке https://t.me/codeforces_official. ×

Блог пользователя Rubanenko

Автор Rubanenko, 12 лет назад, По-русски

Как найти последнюю ненулевую цифру N! быстрее чем за О(N)?

  • Проголосовать: нравится
  • +2
  • Проголосовать: не нравится

»
12 лет назад, # |
Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

посмотри тут http://oeis.org/A008904 конкретнее это http://oeis.org/A008904/a008904b.txt

и еще как найти за O(n)?

  • »
    »
    12 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    Считаем факториал по модулю 10 просто перемножив все числа от 1 до N. Возникает проблема с последними нулями. Зная в какой степени в число войдёт 5 (2 войдет в большей степени), мы знаем количество последних нулей. Теперь, перед умножением на очередной множитель, будем делить его на 2 и на 5, пока он делится или пока количество делений на 2 и на 5 не достигнет количества нулей. Это решение за O(n).

»
12 лет назад, # |
Rev. 3   Проголосовать: нравится 0 Проголосовать: не нравится

О, да тут же сама цифра нужна а не её номер, Сорри.

»
12 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Algo на емаксе за plogn для 2 и для 5. Потом по кто восстановится