题解 | #快速幂#

快速幂

https://www.nowcoder.com/practice/defdedf4fe984c6c91eefa6b00d5f4f0

class Solution:

    def solve(self, a: int, b: int, p: int):
        result = 1

        smod = a % p
        runnum = b

        while runnum > 0:
            if runnum % 2 == 0:
                runnum = runnum >> 1
                smod = (smod * smod) % p
            else:
                runnum -= 1
                result = result * smod % p
        
        print(result)

    def calHalf(self, a: int):
        b = 0
        while a > (b + b):
            b += 1
        return b


if __name__ == '__main__':

    q = input() # 输入行信息
    q = int(q)
    solution = Solution()
    for _ in range(q):
        message = input()
        spinfo = message.split(" ")
        a = int(spinfo[0])
        b = int(spinfo[1])
        p = int(spinfo[2])
        solution.solve(a, b, p)

全部评论

相关推荐

不愿透露姓名的神秘牛友
05-28 12:15
点赞 评论 收藏
分享
06-10 23:36
已编辑
首都经济贸易大学 C++
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务