1,思想类似于大数的加减乘法.
数组的每个元素维护一个4位数.
2,实例代码:
数组的每个元素维护一个4位数.
2,实例代码:
#include<iostream>
using namespace std;
int a[10000];//保存结果
int m=0;//保存位数
void factorial(int n)
{
memset(a,0,sizeof(a));
a[0]=1;
for(int i=1;i<=n;i++)
{
int c=0; //每次新的i,都要置零
for(int j=0;j<=m;j++)
{
a[j]=a[j]*i+c; //以四位数为单位分别与i进行相乘
c=a[j]/10000; //四位之后的数
a[j]=a[j]%10000; //保留前四位
}
if(c>0)
{
m++; //前进了一个四位
a[m]=c;
}
}
}
int main()
{
factorial(10);
for(int i=m;i>=0;i--)
cout<<a[i];
cout<<endl;
return 0;
}