这题非常容易超时,以前好多代码都不行了,目测数据改过,自己写了个还算比较巧妙的,后来发现2000多MS,然后rankNO.1的46MS,orz,哪位看官知道代码的请务必告诉我……
#include<iostream>
#define MAX 50000
using namespace std;
int main()
{
int n,a[MAX];
int i,j,k,count,temp;
while(cin>>n)
{
a[0]=1;
count=1;
for(i=1;i<=n;i++)
{
k=0;
for(j=0;j<count;j++) //大数乘法,逐位乘
{
temp=a[j]*i+k;
a[j]=temp%10;
k=temp/10;
}
while(k)//记录进位
{
a[count++]=k%10;
k/=10;
}
}
for(i=count-1;i>=0;i--)
cout<<a[i];
cout<<endl;
}
return 0;
}