直接的大数相乘问题,无话可说。
#include<iomanip>
#include <iostream>
using namespace std;
#define DEEP 1000000000
void mul(__int64* s,int a)
{
int assist=0;
for(int j=1;j<=s[0];j++)
{
s[j]=s[j]*a+assist;
assist=s[j]/DEEP;
s[j]%=DEEP;
}
if(assist>0)
{
s[0]++;
s[s[0]]=assist;
}
}
int main()
{
int num;
while(cin>>num)
{
__int64 sum[5000];
memset(sum,0,sizeof(sum));
sum[0]=sum[1]=1;
for(int i=1;i<=num;i++)
mul(sum,i);
cout<<sum[sum[0]];
for(int j=sum[0]-1 ;j>=1;j--)
cout<<setfill('0')<<setw(9)<<sum[j];
cout<<endl;
}
return 0 ;
}