高精度乘以单精度 hdu1042 N!
#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;}