N!-201308071627.txt

N!
Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 43926    Accepted Submission(s): 12358


Problem Description
Given an integer N(0 ≤ N ≤ 10000), your task is to calculate N!

 

Input
One N in one line, process to the end of file.

 

Output
For each N, output N! in one line.

 

Sample Input
1
2
3
 

Sample Output
1
2
6
 

 

 

 

 

 


#include <stdio.h>
#include <string.h>
#define MAX_LEN 40000
int main()
{
  int n;
  int a[MAX_LEN];
  while(scanf("%d",&n)!=EOF)
  {
     int i,j,sum,c;
     memset(a,0,sizeof(a));
     a[0]=1;
     for(i=2;i<=n;i++)
     {
      c=0;
      for(j=0;j<MAX_LEN;j++)
      {
       sum=a[j]*i+c;
          a[j]=sum%10;
          c=sum/10;
      }
     }
     for(i=MAX_LEN-1;i>=0;i--)
     if(a[i])
     break;
     //if(n==0)
     //printf("0");
     //else
     //{
      for(j=i;j>=0;j--)
       printf("%d",a[j]);
     //}
     printf("\n");
  }
     return 0;
}

posted @ 2013-08-07 17:19  夏子藤  阅读(195)  评论(0编辑  收藏  举报