随笔分类 -  算法

摘要:首先,先来简单的。比如任意N,M,求N exp M的最后一位。这个其实就是看N的最后一位a和M。把M mod 4的得到的值b(如果模出得0取4),求出a exp b,得到这个的最后一位就可以了。接着就可以求最后两位了。首先要了解几个数论中的定理(其中 // //表示最后两位,/ /表示最后一位)。定理1 R=M mod 20(若M mod 20 = 0, 则取20 ),则// N exp M // = // N expR //。定理2 N的个位数为d, 十位数为c, R=M mod 20(若M mod 20 = 0, 则取20 ),// N exp M // = //(10Rc + d)*(d 阅读全文
posted @ 2011-10-17 21:50 Iacocca Yan 阅读(796) 评论(0) 推荐(0)
摘要:转载自:http://hi.baidu.com/shilyx/blog/item/5bb7733e6313ec3e70cf6cd9.html,感谢作者分享!I.问题的提出 整数n的阶乘写作n!,它是从l到n的所有整数的乘积。阶乘增长的速度很快:13!在大多数计算机上不能用32位的整数来存放。70!已经超出多数浮点类型的范围。你的任务是找出n!最右边的非零位。例如,5!=1*2*3*4*5=120,所以5!的最右非零位为2,同样,7!=1*2*3*4*5*6*7=5040,所以7!的最右非零位为4。50!=304140932017133780436126081660647688443776415 阅读全文
posted @ 2011-10-17 20:18 Iacocca Yan 阅读(1194) 评论(0) 推荐(0)