当我们在编写程序计算阶乘时,数据大小往往会超出long long。此时的n还是一个很小的数,而往往我们在竞赛时,n的范围会很大,上百上千都有可能。所以我们应该自己编写一个程序来计算和存储这个阶乘结果。
下面进入正题,这个阶乘结果往往会是几十位数,几百位数,甚至几千位数。所以我们可以试着用数组来存储这个“大数据”,例如s[0]来存储个位,s[1]存储十位,是s[2]存储百位.......。好,现在知道了这个“大数据”的存储方式,
下面直接上代码
#include<bits/stdc++.h>
#define SIZE 10000
using namespace std;
int s[10000];
int main()
{
int i,j,k,n,jinwei=0;
cin>>n;
s[0]=1;
for(i=2;i<=n;i++)
{
for(j=0;j<SIZE;j++)
{
int a=(s[j]*i+jinwei)%10;
jinwei=(s[j]*i+jinwei)/10;
s[j]=a;
}
}
int h;
for(j=SIZE-1;j>=0;j--)
{
if(s[j]!=0)
{
h=j;
break;
}
}
for(j=h;j>=0;j--)
{
cout<<s[j];
}
}