CSTFS1064 A of power b 运用反复平方法求数的幂

Problem Address:http://cstfs.gdufs.edu.cn:8080/JudgeOnline/problem.jsp?id=1064

 

是求a的b次幂。

 

但是数值很大,不过结果是对100求模。

 

首先把a对100求模。

 

然后仔细观察两位数的幂,因为只有两位,所以每20次方重复一次。

 

不过要注意第一次不适合这个规律,所以要出去幂为1之后再应用。

 

同样的只有一位数的时候也有相似的规律。

 

代码如下:

 

 

 

p.s.刚刚查到过了六级。不过成绩不够理想。还得再考。好好加油!

 

 

+++++++++++++++++++++++++++++++++++时间分割线:以上为3月1日,以下为4月7日。

 

 

今天看了算法导论里的数论里面的一点东西,讲到了“运用反复平方法求数的幂”,大概就是这道题吧。

 

所以今晚回到宿舍写了一下,然后轻松A掉这道题。

 

所谓的“运用反复平方法求数的幂”,具体就去看算法导论吧。

 

求a^b mod n的值。

 

把b化为二进制数。

 

从高位开始。d=1。

 

从高位循环到低位。

 

d = (d * d) mod n。

 

如果此位二进制数为1,则 d = (d * a) mod n。

 

基本思想就是,该二进制代表着数的幂。如果读入下一位,表示把前面的数平方一次。如果该为1,则需要再乘多一个a。

 

还像没怎么讲明白……不懂的好好看书吧……

 

总之就是A掉了~

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值