题解 | 快速乘

快速乘

https://www.nowcoder.com/practice/043c66e95fe548d0b8e56c1830330f93

import sys


"""

 a*b mode p 

 b转为二进制
 快速乘法(a*b mod p)是一种用于计算大整数乘法取模的高效算法,特别适用于a和b规模较大(如达到10^18级别)时避免溢出的场景。其核心思想是将乘法转换为二进制分解的加法运算,结合模运算性质降低计算复杂度‌ 

"""
# for line in sys.stdin:
#     a = line.split()
#     print(int(a[0]) + int(a[1]))
def  sovler():
    def  fun(a,b,p):
        res=0
        while b>0:
            if b%2==1:
                res =(res+a)%p
            a=a*2
            b=b//2
        return res
    n =int(input())
    for i in range(n):
        line =input()
        lines=line.split(" ")
        a= int(lines[0])
        b= int(lines[1])
        p =int(lines[2])
        ret=fun(a,b,p)
        print(ret)
sovler()

全部评论

相关推荐

不知道怎么取名字_:玩游戏都写到简历上了啊
投递BOSS直聘等公司6个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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