转载的计算大数的阶乘

来源:互联网 发布:mac phpstorm 破解 编辑:程序博客网 时间:2024/05/21 17:03
#include <iostream>
using namespace std;
int main(){
       unsigned long int a[5000],d;
       int b,i,n,c;
       cin>>n;
       while (n>5000||n<1)return 0;
       a[0]=1;
      for(b=1;b<5000;b++)a[b]=0;
      for(i=1;i<=n;i++)
{
      b=4999;
      while (a[b]==0)b--;
      for(;b>=0;b--)
 {
   a[b]=a[b]*i;
   c=b;
  while(a[c]>=100000)
  {
  d=a[c]/100000;
  a[c]=a[c]%100000;
   c++;
  a[c]=a[c]+d;
  }
 }
 }
  i=4999;
 while(a[i]==0)
 i--;
 cout<<a[i];
 for(i--;i>=0;i--)
 {
 if(a[i]>9999)
 cout<<a[i];
   else if(a[i]>=999)
 cout<<"0"<<a[i];
  else if(a[i]>99)
 cout<<"00"<<a[i];
 else if(a[i]>9)
 cout<<"000"<<a[i];
 else if(a[i]>0)
 cout<<"0000"<<a[i];
 else cout<<"00000";
 }
 cout<<endl;


 return 0;
}
0 0