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;
}
愿你出走半生,归来仍是少年

浙公网安备 33010602011771号