因子 - 数组 - C ++

时间:2014-05-26 16:06:18

标签: c++ arrays integer factorial

问题是计算数字的阶乘。我调试了我的代码,它适用于任何输入,并为所有给定的测试用例生成正确输出。但是,我在SPOJ上得到了错误的答案。

问题:

整数t,1&lt; = t&lt; = 100,表示测试用例的数量,后跟t行,每行包含单个整数n,1 <= n <= 100。

任何见解都会有所帮助。我错过了一些关键的测试用例吗?

我的代码:

#include <iostream>
using namespace std;
int main()
{

long T;
cin>>T;
while(T--)
{
    long long N;

    long long index, count;
    cin>>N;
    long long a[300];
    long long i=1;
    a[0]=1; count=1;
    while(i<=N)
    {

        long long z=0;
        long long k; long long x;
        long long j=i;
        long long temp=0; long long current=0;
        for(k=0; k<count;k++)
        {
            x=(a[k]*j)+temp;
            a[k]=x%10;
            temp=x/10;
        }
        if(temp>0)
            while(temp>0)
            {
                a[k]=temp;
                temp=temp/10;
                k++;
                count++;
            }


        i++;
    }


    for(long long g=count-1; g>=0; g--)
        cout<<a[g];
        cout<<"\n";

}
return 0;
}

2 个答案:

答案 0 :(得分:1)

这一行:

a[k]=temp;

应该是:

a[k]=temp % 10;

答案 1 :(得分:1)

试试这个

#include <iostream>

long double factorial(int n)
{
    long double r = 1;

    while(n > 1){
        r *= n;
        --n;
    }

    return r;
}

int main()
{
    std::cout << factorial(100) << std::endl;

    system("PAUSE");
}