HDOJ 1042(N!)

HDOJ 1042(N!)

大数阶乘,10000以内。http://acm.hdu.edu.cn/showproblem.php?pid=1042

/**/ /*************************************
Problem : 1042 ( N! )     Judge Status : Accepted
RunId : 783801    Language : G++    Author : Torres
Code Render Status : Rendered By HDOJ G++ Code Rander Version 0.01 Beta
*******************************
*/


#include
< iostream >
#include
< cmath >
using   namespace  std;

int  re[ 40000 ];
void  bigplus( int  n)
{
    
int i,flag=0;
    
for(i=1;i<=re[0];i++)
    
{
        re[i]
=re[i]*n+flag;
        
if(re[i]>99999){
            flag
=re[i]/100000;
            re[i]
%=100000;
        }

        
else flag=0;
    }

    
if(flag){ re[i]=flag;re[0]++;}
}


int  main()
{
    
int n,i;
    
while(scanf("%d",&n)!=EOF){
        memset(re,
0,sizeof(re));
        re[
0]=1;re[1]=1;
        
for(i=2;i<=n;i++)
            bigplus(i);
        printf(
"%d",re[re[0]]);
        
for(i=re[0]-1;i>=1;i--)
            printf(
"%05d",re[i]);
        printf(
"\n");
    }

    
return 0;
}



你可能感兴趣的:(HDOJ 1042(N!))