AcWing 89. a^b
Luogu P1226 【模板】快速幂||取余运算

题目描述

给你三个整数a,b,pa,b,p,求abmodpa^b \bmod p

输入格式

输入只有一行三个整数,分别代表a,b,pa,b,p

输出格式

输出一行一个字符串 a^b mod p=s,其中a,b,pa,b,p 分别为题目给定的值,ss 为运算结果。

样例 #1

样例输入 #1

1
2 10 9

样例输出 #1

1
2^10 mod 9=7

提示

样例解释

210=10242^{10} = 10241024mod9=71024 \bmod 9 = 7

数据规模与约定

对于100%100\% 的数据,保证0a,b<2310\le a,b < 2^{31}a+b>0a+b>02p<2312 \leq p \lt 2^{31}

题解

快速幂

AC Code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <bits/stdc++.h>

using namespace std;

int main() {
long long a, b, p, res = 1;
cin >> a >> b >> p;
while(b) {
if(b & 1) //判断b的二进制的最后一位
res = res * a % p;
b >>= 1; //移到下一位
a = a * a % p;
}
cout << res % p;
return 0;
}

做简单题就是开心,不用脑子。

🫤突发奇想想干这事了,说不准这是第一次打卡也是最后一次呢。