ou_fan (方法转载而来)
Description |
求1*2*3*…*N所得数末尾有多少个0?(1<=N<=unsigned INT_MAX) |
Input |
有多组数据,第一行一个正整数t(t<100)表示输入数据组数,接下来有t组输入数据,每组数据占1行,输入为一个整数。 |
Output |
输出一个整数,表示末尾有多少个0,对于每组输入,输出一行。 |
Sample Input |
1 100 |
Sample Output |
24 |
#include<iostream>
using namespace std;
int i, ii, n;
int main()
{
int t;
cin >> t;
while (t--) {
cin >> n;
i = n;
ii = 0;
while (i >= 5)
{
i /= 5;
ii+=i;
}
cout << ii << endl;
}
return 0;
}
原理:观察:1*2*3*4*5*6*7*8*9*10
其中仅有2*5,*10可以构成末尾为0的情况;则以5为一个基准;