收藏 分享(赏)

高次幂取模.ppt

上传人:天天快乐 文档编号:1156131 上传时间:2018-06-15 格式:PPT 页数:10 大小:103.50KB
下载 相关 举报
高次幂取模.ppt_第1页
第1页 / 共10页
高次幂取模.ppt_第2页
第2页 / 共10页
高次幂取模.ppt_第3页
第3页 / 共10页
高次幂取模.ppt_第4页
第4页 / 共10页
高次幂取模.ppt_第5页
第5页 / 共10页
点击查看更多>>
资源描述

1、高次幂取模(快速幂取模)(张鹏),基本概念及思想,对形如ab mod m 的运算(b一般较大)但a,b,m都在long型范围内算法的主要思想是分治,分而治之。将大的问题分成若干个相似的较小的问题!具体实现是用递归的方法!,举例,2100 mod 3像这种运算如果先算出2100 的值,然后再模上3,相信比较困难!我们可以将100变小点2100=(250)2 =(225)2)2=(21)2)2)2若我们已经得出250 mod 3的值,我们便很简单地得出2100 mod 3的值。,续上,按照上述的方法继续分下去最终肯定会得到 21 mod 3 这种情况!这样就好办了!这便是递归的边界,到此我们就可以

2、返回2 mod 3的值了!另一个问题,再分时有两种情况!2100=(250)2 , 100是偶数299=(249)2 *2 , 99是奇数第二种情况需要在第一种情况上乘上一次基数。,主要代码,long mod(long a,long b,long m) if(!b) return 1; /边界处理 if(b=1) return a%m; /边界处理 long ans=mod(a,b/2,m); /进入下一层 ans=ans*ans%m; /返回值ans代表ab/2 if(b /返回ans代表abmodm,调用,上述函数是有三个参数,且有返回值!它的功能是计算ab mod m的值!如何在主函数里

3、调用呢?例如我们要计算2100mod3的结果!我们可以首先定义一个变量ans,在主函数读入工作完成后,我们可以写ans=mod(2,100,3);ans 里的数值便是2100mod3的结果了。,递推法,用递推法首先要将b转换为二进制数,(b)10=(b)2。举例: (45)10=(101101)2545 mod 3 =2二进制数由0和1组成,它们分别代表着偶数和奇数。递推时在0和1处的处理是有差别的。,参考代码,二进制转换:long s=0;while(b0) t+s = b%2; b/=2;,续上,递推过程:long ans=1;for(i=1;i=s;i+)if(ti) ans=ans*ans*a%m;else ans=ans*ans%m;,End,Thank you,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 经营企划

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报