c++ - 阶乘 CodeChef 错误 (C++)

标签 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;
    }
}

最佳答案

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

还有:

  1. 您可以使用 n/=5n 而不是使用 pow。
  2. 您不需要额外的牙套。
  3. 无需将结果插入 vector 即可输出结果。

关于c++ - 阶乘 CodeChef 错误 (C++),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37692758/

相关文章:

c++ - C3859 : Virtual memory range for PCH exceeded

c++ - 将 ddhhmm 转换为 YYYY-MM-DD hh :mm format in C++

c++ - 如何从层序遍历构造完整树

c++ - 将二维数组传递给方法

c++ - 如何打印出C-String的内存地址?

c++ - 使用 Boost.Asio 获取本地 IP 地址

c++ - Qt C++ - 访问动态创建的 Widget (QLineEdit)

c++ - 奇怪的预处理

c++ - operator new 如何知道内存已分配

c++ - 工厂应该负责重建序列化对象吗?