HDU 1042 N!
题解:高精度乘法压位。
#include <cstdio> #include <cstring> const int mod=10000; int l,n,a[1000000]; int main(){ while(~scanf("%d",&n)){ memset(a,0,sizeof a); a[1]=1; l=1; for(int i=2,m=0;i<=n;i++){ for(int j=1;j<=l;j++){ (a[j]*=i)+=m; m=a[j]/mod; a[j]%=mod; }while(m>0){a[++l]=m%mod;m/=mod;} }printf("%d",a[l]); for(int i=l-1;i;i--)printf("%04d",a[i]);puts(""); }return 0; }
愿你出走半生,归来仍是少年