大数阶乘 c++

就是求n!

 

(一)

 

 

对于
for(k=1;k <i;k++) 这句,
假如此时i=3,j=max-1,
那新个位 就是 3个以前结果的个位相加并进位后剩下的个位。(循环开始时a[max-1],b[max-1]都是以前结果的个位)

 

 

(二)

转自http://www.programfan.com/blog/article.asp?id=568

 

(三)

转自http://download.csdn.net/source/629944

 

(四)

转自http://hi.baidu.com/peng3409/blog/item/87917cd997b747ec38012f6d.html

HDU 1042—题目要求计算10000!大约有35000~36000位,用上篇介绍的方法是满足不了需求的。分析,我们可以知道计算时所需要的时间耗费在进位处理上,由于我们使用10进制方式,结果导致计算长度len很大。为了减少计算时间,做一点改动,将进位改为10^10,这样进位长度大大缩减,由于10^10超过int的范围,我们使用__int64(注意,两个下划线)。提交到杭州电子科技大学的ACM判题系统显示耗时1720MS,如果想进一步减少时间可以通过扩大基数来实现,不过原理就类似了。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值