五子棋 day3

任务 4
实现模幂算法,通过服务器的检验。

访问http://xxx/step_04服务器会给你10个问题,每个问题包含三个数(a,b,c),请给出a^b%c的值。返回值写入字段ans,10个数字用逗号,隔开,提交到http://xxx/step_04
提示:注意逗号必须是英文逗号。

{"is_success": true, "questions": "[[744514414427, 559362725, 935740772056], [195406089, 496563474, 106218341108], [295455309208, 8117, 201041123261], [325, 452310091, 7262], [756939895, 838624500, 5986], [2147, 943269921393, 7414], [666963763, 424, 222941841190], [6036, 374096724, 341319300], [800, 7716, 968212866], [851, 529550654, 5736]]"}

给的数据。。。day2直接访问了这个出题网址,没有提示卡了好久,气死
任务四就是实现模幂算法后计算十族数据根据day2的方法提交即可

参考:https://blog.csdn.net/storyfull/article/details/103423919
参考:https://blog.csdn.net/sinat_34853107/article/details/104885711
参考:https://blog.csdn.net/ggdhs/article/details/90141960
参考:https://blog.csdn.net/iwts_24/article/details/79780596
参考:https://blog.csdn.net/lozcy/article/details/88370691
参考:https://www.pythonheidong.com/blog/article/410709/76eb5111d7d01abec11e/
参考:https://my.oschina.net/u/4401036/blog/3713526
其实都大同小异,差不多的实现方法,不过不同的人分析不太一样可以借鉴一下。
模幂原理可以看这里的介绍:https://www.khanacademy.org/computing/computer-science/cryptography/modarithmetic/a/modular-exponentiation
eval函数:https://blog.csdn.net/quanlingtu1272/article/details/95454722

快速模幂:

def modular_exponentiation(base, exponential, mod):
    base = base % mod
    res = 1
    while exponential:
        if exponential & 1 == 1: #判断最后一位
            res = (res * base) % mod #为1则乘幂
        base = (base * base) % mod #累乘记录幂
        exponential >>= 1  #右移一位
    return res
# (a ^ b) % c = (a%c) ^ (b %c)

a = eval(input("base:"))
b = eval(input("exponential:"))
c = eval(input("mod:"))

print("快速模幂:%d" % (modular_exponentiation(a, b, c)))

正确结果:328384448867,21329413997,132731516131,3733,4673,4815,132835840231,163917216,624329404,361
提交即可,到第五步

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值