n!末尾0的个数

总时间限制:
1000ms
内存限制:
65535kB
描述
给定一个正整数N,那么N的阶乘N!末尾有多少个0呢?例如:N=10,N!=3 628 800,N!的末尾有两个0。

注意:N<=100,000,000。
输入
第一行为N,表示有N个输入。接下来有N行,每一行包括一个正整数。
输出
对于每个输入,每行输出结果。
样例输入
2
5
10
样例输出
1
2

这是一个简单的题,但是想要直接一个个乘出来,再来计算末尾0绝对行不通。

     仔细想想,末尾0的个数最大关系是和5有关,一个5对应一个0,所以只要计算出

总数里面能拆出多少个5 ;另外循环式,应该让i每次增加5,不然会超时。

       

#include<iostream>
#include<cstdlib>
using namespace std;
int n ;
int count(int index)
{    int sum = 0 ;
     if(index%5==0)
     {
         sum++ ;
       sum += count(index/5) ;
     }
     return sum ;
}
int main()
{
  int t ;
  cin>>t ;
  while(t--){
  int i=5,sum=0;
  cin>>n ;
  if(n<5)
  {
      cout<<0<<endl ;
      continue  ;
  }
  while(i<=n)
  {
  sum += count(i) ;
   i = i +5 ;
   }
 cout<<sum<<endl ;
  }
  return 0 ;
}

 

你可能感兴趣的:(n!末尾0的个数)