for(i=1,a[Max-1]=1;i<=n;++i) { for(j=Max-1,carry=0;j>=0;--j){ carry+=a[j]*i; a[j]=carry%base; carry=carry/base; } }