问题是计算数字的阶乘。我调试了我的代码,它适用于任何输入,并为所有给定的测试用例生成正确输出。但是,我在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;
}
答案 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");
}