51Node 1057(大数)

来源:互联网 发布:淘宝刷销量在哪里找人 编辑:程序博客网 时间:2024/06/08 14:05

大数阶乘 


每一位中保存一个位数小于十五位的数字 然后模拟小学生算数的过程 需要注意前导零和运算过程中的进位等问题





#include<cstdio>#include<cstring>long long ans[3000000];int cnt;void mul(int x);int main(){int n;while(~scanf("%d",&n)) {//if(n <)cnt = 1;ans[0] = 1;for(int i = 1; i <= n; i ++) {mul(i);}for(int i = cnt-1; i >= 0;  i--) {if(i!=cnt-1)printf("%15.15lld",ans[i]);elseprintf("%lld",ans[i]);}printf("\n");}}void mul(int x) {long long temp = 0,yu = 0,jin = 0;for(int i = 0; i < cnt; i ++) {ans[i] *= (long long )x;ans[i] += jin;jin = ans[i]/1000000000000000;ans[i]%=1000000000000000;}if(jin){while(true) {ans[cnt] = jin;jin = ans[cnt]/1000000000000000;ans[cnt++]%=1000000000000000;if(!jin)break;}}}


0 0