专栏文章
题解:P1226 【模板】快速幂
P1226题解参与者 1已保存评论 0
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @miq1iatk
- 此快照首次捕获于
- 2025/12/03 21:25 3 个月前
- 此快照最后确认于
- 2025/12/03 21:25 3 个月前
题解
P1226 【模板】快速幂
题目描述
给定三个整数 ,要求计算 。输入格式
输入只有一行三个整数,分别代表 。输出格式
输出一行一个字符串a^b mod p=s,其中 分别为题目给定的值, 为运算结果。
解题思路
快速幂简介
快速幂算法是一种高效计算幂运算的方法,尤其适用于大指数的幂运算。其核心思想是通过将指数 进行二进制分解,从而将幂运算转化为多个平方运算的乘积,从而大大减少计算量。
快速幂算法的步骤:
- 初始化结果为 。
- 当 时,进行以下操作:
- 如果 是奇数,将结果乘以 并取模 。
- 将 平方并取模 。
- 将 右移一位(即除以 )。之所以不用
b/=2,是因为右移的用时更少 理论上来说,但是实测b/=2也可以 。
- 最终结果即为 。
AC Code:
AC Code编译模式:
CPPC++14(GCC9)#include<bits/stdc++.h>
using namespace std;
long long fastPow(long long a, long long b, long long p) {
//十年OI一场空,不开 long long 见祖宗
long long result = 1;
while (b > 0) {
if (b & 1) { // 如果b是奇数
result = result * a % p;
}
a = a * a % p; // a的平方
b >>= 1; // b右移一位
//将 "b >>= 1" 改为 "b /= 2" 也可以!
}
return result;
}
int main() {
long long a, b, p;
cin >> a >> b >> p;
long long s = fastPow(a, b, p);
cout << a << "^" << b << " mod " << p << "=" << s << endl;
return 0;
}
蒟蒻的第一个
【模板】 题目题解,求过相关推荐
评论
共 0 条评论,欢迎与作者交流。
正在加载评论...