AcWing 89. a^b

题目传送门

一、题目大意

ab 次方对 p 取模的值。

二、解题方法

一看到这道题,就可以知道是快速幂。
这道题的重点是快速幂,那我就来认真讲讲。

快速幂是使用二进制的思想来在 O(logn) 的时间内解决幂的问题的方法。

举个栗子
710次方

计算思路:
10=(1010)2

从右向左
71=7
72=7171
74=7272
78=7474

如上面的办法,我们只需要计算4次,成倍的翻番,而不用最笨的乘10次!所得的结果相乘或不断取模就行了。

三、实现代码

#include <bits/stdc++.h>
using namespace std;
typedef long long LL;

int main() {
    LL a, b, p, res = 1;
    cin >> a >> b >> p;
    while (b) {
        if (b & 1) res = res * a % p;
        a = a * a % p;
        b >>= 1;
    }
    printf("%lld\n", res % p);
    return 0;
}
posted @   糖豆爸爸  阅读(141)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
历史上的今天:
2019-05-25 海沧区磁盘扩容思路办法
2018-05-25 使用Windows 2008R2中的NFS替代Samba协议,解决Windows 与Linux共享文件的问题
Live2D
点击右上角即可分享
微信分享提示