题解 | #快速乘#

快速乘

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

import sys

lines = []
for line in sys.stdin:
    a = line.split()
    lines.append(a)

for i in range(int(lines[0][0])):
    cur_line = lines[i+1]
    
    aa = int(cur_line[0])
    bb = int(cur_line[1])
    pp = int(cur_line[2])

    add_result = 0

    while 1:
        if bb == 0:
            add_result = 0
            break
        if bb == 1:
            add_result += aa
            break
        else:
            if bb % 2 == 1:
                add_result += aa  # 除2余1,意味着在此二进制位为1,则执行一次+=
            aa = (aa + aa)  # 每执行一步,相当于aa乘以2^n
            bb = bb // 2

    result = add_result % pp
    print(result)

全部评论

相关推荐

真烦好烦真烦:豆包润色了自己没看看吗,再说了,都说豆包是愚蠢且勤快的大学生,ds才是聪明的研究生,怎么敢让豆包写论文的
点赞 评论 收藏
分享
亮点儿:昨天二面,今天看状态回到一面了查看图片
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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