问题是计算一个数的阶乘。我已经调试了我的代码,它适用于任何输入并为所有给定的测试用例生成正确 输出。但是,我仍然在 SPOJ 上得到错误的答案。
问题:
一个整数t,1<=t<=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;
}
最佳答案
这一行:
a[k]=temp;
应该是:
a[k]=temp % 10;
关于c++ - 阶乘 - 数组 - C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23874020/