Factorial CodeChef错误(C ++)

时间:2016-06-08 03:32:14

标签: c++

即使我的答案与输出完全匹配,我也会在CodeChef上收到以下问题的错误答案。请帮忙。

问题:

对于任何正整数N,Z(N)是数字N!的十进制形式末尾的零数。

输入

输入的第一行有一个正整数T(等于约100000)。它代表要遵循的数字数量。然后有T行,每行包含恰好一个正整数N,1 <= N <= 1000000000。

输出

对于每个数字N,输出包含单个非负整数Z(N)的单个行。 实施例

Sample Input:
6
3
60
100
1024
23456
8735373


Sample Output:
0
14
24
253
5861
2183837

我的代码:

`#include<iostream>
 #include<math.h>
 #include<vector>
 using namespace std;

 long long int z(long long int n)
 {    long long int p = 1, count = 0;
 while(n>(pow(5,p)))
 {
    count = count + n/(pow(5,p));
    p++;
 }
 return count;
 }

int main()
{
    long long int T,n;
    cin>>T;
    vector<long long int> myVector;

    for (int i=0; i<T; i++)
    {
        cin>>n;
        myVector.push_back(z(n));
    }

    for(int k=0; k<T; k++)
    {
        cout<<myVector[k]<<endl;
    }
}

1 个答案:

答案 0 :(得分:3)

while(n>(pow(5,p)))
while(n>=(pow(5,p)))

此外:

  1. 您可以n/=5使用n而不是使用pow。
  2. 你不需要额外的牙套。
  3. 您可以输出结果而不将其推入矢量。