计算整数n!(n的阶乘)末尾有多少个0。
输入
第一行输入一个数T代表测试数据个数(T<=20)。接下来T行每行1个数代表n(0<=n< 2^31)。
输出
对于每个测试数据输n!末尾有多少个0,每行输出一个结果。
示例输入
3 1 5 10
示例输出
0 1 2
分析:
设 f(n!)表示正整数n的阶乘的末尾的0的个数
有公式:
1、当0<n<5时,f(n!)=0;
2、当n>=5时, f(n!)=k+f(k!) ,其中k=n/5(取整)
代码:
#include<iostream.h> #include<String.h> #define N 40 int f(long n) { long k; if(n<5) return 0; else { k=n/5; return(k+f(k)); } } int main() { long m; int t,num; cin>>t; while(t--) { cin>>m; num=f(m); cout<<num<<endl; } return 0; }