HDU1042N!

大数,水题来着,不过如果不够细心,非常容易出错,水题水题,如果不够细心,水题也能搞死你。

自己写的,哎,水平确实还不好,当模板实在不行。留自己以后慢慢欣赏。

#include<iostream>
using namespace std;
int main(void)
{
 int n,i,j,k,carry,answer[50000];
 while(cin>>n)
 {
  memset(answer,0,sizeof(answer));
  answer[1]=1;
  for(i=2,k=1;i<=n;i++)
  {
   for(j=1,carry=0;j<=k;j++)
   {
    answer[j]=answer[j]*i+carry;
    carry=answer[j]/10;//注意这一句与下面那一句不能
    answer[j]%=10;//颠倒,否则就错的离谱了,logic啊,,严谨一点
   }
   while(carry)//乘法的进位处理。
   {
    answer[++k]=carry%10;
    carry/=10;
   }
  }
  //cout<<k<<endl;
  for(i=k;i>=1;i--)
   cout<<answer[i];
  cout<<endl;
 }
 return 0;
}

原文地址:https://www.cnblogs.com/cchun/p/2520066.html