阶乘
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | #include<bits/stdc++.h> #define mod 100000000000000 typedef long long ll; using namespace std; ll ans[10000000]; int main() { int N; ll t,s,l=0;//l记录结果所占数组长度 cin>>N; ans[0]=1; for(int i=2;i<=N;i++) { s=0;//s存储超过14位的部分 for(int j=0;j<=l;j++) { t=ans[j]*i+s; ans[j]=t%mod; s=t/mod; } if(s)ans[++l]=s; } printf("%lld",ans[l]);//单独输出消去前缀0 for(int i=l-1;i>=0;i--) printf("%014lld",ans[i]);//之后的就要严格按14位输出 printf("\n"); return 0; } |