- Description 求$n!$在$k$进制下后缀$0$的个数.
老夫掐指一算,竟然掐到std算法?
- Solution
讲道理,刚开始看到这道题是不会做的。
但是老夫想想如果$m=10$还是会做的。
数数小于等于$n$有多少个5的倍数就行了。2的倍数绝对比5的倍数多嘛。
于是我就有了一点想法。
首先质因数分解少不了的。$m = \sum{i = 1}^k s_i^{cnt_i}$
然后,对于每个质因数$s_i$,算一算$[1,n]$能找到多少它的倍数(不过类似计算2时遇到$2^3$这些要算三次的)
怎么计算?容斥一下?应该只有我这种zz一开始这么想?
后来发现计算的时候每次加1就行了,因为前面的都已经计算过了。
算完之后,发现$s_i$在$[1,n]$中找到了$x_i$,但是出现一个$m$至少$s_i$要出现$cnt_i$次。所以最终答案就是$min\{i=1}^{k}{\frac{x_i}{cnt_i} }$
|
|