NYOJ 28 大数阶乘

#include<stdio.h>
#include<string.h>
const int max=3000;
int f[max];
int main()
{
  int i,j;
  memset(f,0,sizeof(f));
  int a;
  while(~scanf("%d",&a))
  {
    f[0]=1;
    for(i=2;i<=a;i++)
    {
      int c=0;
      for(j=0;j<max;j++)
      {
        int s=f[j]*i+c;
        f[j]=s%10;
        c=s/10;
      }
    }
    for(j=max-1;j>=0;j--) if(f[j]) break;
    for(i=j;i>=0;i--)
      printf("%d",f[i]);
    printf("\n");
    memset(f,0,sizeof(f));
  }
}

posted @ 2015-07-02 20:28  小松鼠。  阅读(130)  评论(0编辑  收藏  举报