★P1226 【模板】快速幂

题目描述

给你三个整数 a,b,p,求 abmodp

输入格式

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

输出格式

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

输入输出样例 #1

输入 #1

2 10 9

输出 #1

2^10 mod 9=7

说明/提示

样例解释

210=10241024mod9=7

数据规模与约定

对于 100% 的数据,保证 0a,b<231a+b>02p<231

题解

#include <iostream>
using namespace std;
// 快速幂函数,计算 a^b % p
long long fastPow(long long a, long long b, long long p) {
long long res = 1;
a %= p; // 先对 a 取模,避免在后续计算中溢出
while (b > 0) {
if (b & 1) { // 判断 b 的二进制表示的最低位是否为 1,等同于 b % 2 == 1
res = (res * a) % p;
}
a = (a * a) % p;
b >>= 1; // 右移一位,等同于 b /= 2
}
return res;
}
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;
}
发布于   xiins  阅读(1)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示