快速幂
题单 🧑🏻💻
题目来源 | 题目名称 | 题目链接 | 备注 | 难度 |
---|---|---|---|---|
洛谷 - P1226 | 【模板】快速幂 | 链接🔗 | 模版题 | 🟢 |
题解 🚀
快速幂
题目信息 📚
【题目名称】洛谷 P1226 - 【模板】快速幂
【题目描述】
给你三个整数 $a,b,p$,求 $a^b \bmod p$。
【输入】
输入只有一行三个整数,分别代表 $a,b,p$。
【输出】
输出一行一个字符串 a^b mod p=s
,其中 $a,b,p$ 分别为题目给定的值, $s$ 为运算结果。
【输入样例】
2 10 9
【输出样例】
2^10 mod 9=7
【数据范围】
对于 $100%$ 的数据,保证 $0\le a,b < 2^{31}$,$a+b>0$,$2 \leq p \lt 2^{31}$。
【原题链接】
https://www.luogu.com.cn/problem/P1226
题目解析 🍉
【题目分析】
快速幂
【 C++ 代码】
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
// 快速幂模版
LL fast_power(LL a, LL b, LL p) {
LL res = 1;
while (b) {
if (b & 1) res = res * a % p;
b >>= 1;
a = a * a % p;
}
return res;
}
int main() {
LL a, b, p;
cin >> a >> b >> p;
cout << a << "^" << b << " mod " << p << "=" << fast_power(a, b, p) << endl;
return 0;
}