大数,水题来着,不过如果不够细心,非常容易出错,水题水题,如果不够细心,水题也能搞死你。
自己写的,哎,水平确实还不好,当模板实在不行。留自己以后慢慢欣赏。
#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;
}