1. 题目
题意:给出 n,求 n!的最右边一个非零位的值
2. 题解
对于这题确实是可以用 O(n)或 O(nlogn)级别的算法做
但是我们怎么能止步于如此浅薄的层次呢 QvQ
算法过程:
- 读入 A
- 将 A转换为 5进制,得到 5进制数字 A5,其第 i位的值为 A5[i](i从 0开始)
- 设 t为 ∑i mod 2=0A5[i]
- 设 x为 ∑A[i]∗i
- 设 z为 x+t2 mod 4
- 设 y为 2z
- 则答案为 {6∗(y mod 2)+y∗[1−(y mod 2)]} mod 10
复杂度 O(log5A)
代码:
2 条评论
litble · 2018年4月4日 11:12 上午
太强啦
konnyakuxzy · 2018年4月4日 11:18 上午
Orz%%% 您别 D 我啦