NEFU 118 n!后面有多少个0数论
Posted ╰追憶似水年華ぃ╮
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了NEFU 118 n!后面有多少个0数论相关的知识,希望对你有一定的参考价值。
http://acm.nefu.edu.cn/JudgeOnline/problemShow.php?problem_id=118
求n!后面有多少个0(1<=n<=1000000000),显然,n!肯定存不下。
2*5=10,所以有多少个2*5就有多少个0,所以只须求n!中因子2和因子5的个数。根据结论有
f(2) = [ n / 2 ] + [ n / 4 ] + [ n / 8 ] + ……
f(5) = [ n / 5 ] + [ n / 25 ] + [ n / 125 ] + ……
显然f(2)不会小于f(5),那么只须求f(5)就行了。
1 #include<iostream> 2 #include<cstring> 3 #include<cstdio> 4 #include<cmath> 5 #include<algorithm> 6 using namespace std; 7 typedef long long ll; 8 9 int main() 10 { 11 int n,m; 12 cin>>m; 13 while(m--) 14 { 15 cin>>n; 16 int cnt=0; 17 while(n) 18 { 19 cnt+=n/5; 20 n=n/5; 21 } 22 cout<<cnt<<endl; 23 } 24 }
以上是关于NEFU 118 n!后面有多少个0数论的主要内容,如果未能解决你的问题,请参考以下文章
HDU 2841 Visible Trees 数论+容斥原理