现在的位置: 首页 > 综合 > 正文

高精度乘以单精度 hdu1042 N!

2013年12月20日 ⁄ 综合 ⁄ 共 378字 ⁄ 字号 评论关闭
#include<iostream>
#include<cstdio>

using namespace std;
int ans[10000000];//存放n!的结果

int main()
{
 int n,i,j,k,len;
 while(~scanf("%d",&n))
 {
  ans[1]=1;
  len=1;
  for(i=2;i<=n;i++)
  {
   for(j=1;j<=len;j++)//边乘边进位
   {
    ans[j]=ans[j]*i+ans[j-1]/10;
    ans[j-1]%=10;
   }
   while(ans[len]>=10)//判断最高位是否需要进位
   {
    len++;
    ans[len]=ans[len-1]/10;
    ans[len-1]%=10;
   }
  }
  for(i=len;i>1;i--)
   printf("%d",ans[i]);
  printf("%d\n",ans[1]);
 }
 return 0;
}

 

抱歉!评论已关闭.