第一课 快速幂取模
2013-03-23 17:48
113 查看
站在acm的角度上看,《算法概论》这本书上感觉废话好多。
始终觉得学算法的最佳途径就是做题,而不是单纯的看书看伪算法。实现才是王道。
快速幂取模,其实也是以前写过的二分求幂,或离散课上的同余幂。
以前写的代码版本太乱,现在总结一下,以便以后碰到这类问题能直接对症下药。
求b^e mod m,b,e,m都是比较大的整数。
递归算法:
非递归算法:
始终觉得学算法的最佳途径就是做题,而不是单纯的看书看伪算法。实现才是王道。
快速幂取模,其实也是以前写过的二分求幂,或离散课上的同余幂。
以前写的代码版本太乱,现在总结一下,以便以后碰到这类问题能直接对症下药。
求b^e mod m,b,e,m都是比较大的整数。
递归算法:
//快速幂取模 int modexp(int b, int e, int m) //b是底数,e是指数,m是模 { if (e == 0) return 1; int temp = modexp(b, e/2, m); if (e%2) //若e是奇数,那么除以2后会少乘一个b. return b*temp*temp%m; else return temp*temp%m; }
非递归算法:
int modexp(int b, int e, int m) { int ans = 1; while (e) { if (e%2) //若e是奇数,那么除以2后会少乘一个b. ans = ans*b%m; b = b*b%m; e /= 2; } return ans; }
相关文章推荐
- Scala快速入门_DT大数据梦工厂第一课
- 需求分析实战第一课-如何快速完成一个新功能的需求分析
- swift第一课快速体验playground
- 如何在神箭手上快速开发爬虫——第一课 简单的文章爬虫【糗事百科】
- 网赚项目之站群第一课如何利用站群快速赚钱
- 如何在神箭手上快速开发爬虫——第一课 简单的文章爬虫【糗事百科】
- Quartz.NET快速上手第一课(官网文档翻译)
- 如何快速的发展出吻合Java 2 platform Enterprise Edition的应用程序 选择自 jiangtao 的 Blog
- dojo快速入门----【测试有效】
- 今天需要快速对多线程明白个大概。。。
- github快速使用指南
- 快速排序
- iOS开发-ios7下拉刷新,上提加载快速集成
- UVA - 10870 Recurrences (矩阵快速幂)
- Python 第一课
- 可以将txt快速转换成pdf的方法分享
- 系统妈Win10系统64位和32位快速专业版
- 怎样在ZBrush中快速绘制人体躯干
- 日常学习linux---vim编辑器-----vim快速入门
- Solr.NET快速入门(三)【Faceting】