HDU1042 N! 一直Wrong Answer,希望有空的大牛能帮我看看代码!
题目:
这里贴上我的代码:
#include
#include
#define Me(a) memset(a,0,sizeof(a))
using namespace std;
const int M=100000;
int a[M];
int Ret(int& x)
{
int i,t,j=0;//j进位
for(i=0;;i++)
{
if(i>=x&&j==0) break;
t=a[i]+j;
j=t/10;
a[i]=t%10;
}
x=i;
}
int main()
{
int n;
while(cin>>n)
{
Me(a);
int x,i,f,t;
x=n;
for(i=0;x;i++) //i记录最高位-1
{
a[i]=x%10;
x/=10;
}
for(f=n-1;f>1;f–)
{
for(t=0;t<i;t++)
{
a[t]*=f;
}
Ret(i);//调整数组
}
for(f=i-1;f>=0;f–) cout<<a[f];
cout<<endl;
}
return 0;
}