a^b(快速幂)

简介: 题目:求 a 的 b 次方对 p 取模的值。输入格式:三个整数 a,b,p ,在同一行用空格隔开。输出格式:输出一个整数,表示a^b mod p的值。

题目:

求 a 的 b 次方对 p 取模的值。

输入格式:

三个整数 a,b,p ,在同一行用空格隔开。

输出格式:

输出一个整数,表示a^b mod p的值。

数据范围:

0≤a,b≤109

1≤p≤109

输入样例:

3 2 7

输出样例:

2

这道题看似很简单,用函数就可以做出来,但是当数据很大的时候,容易爆long long,所以这道题用到了快速幂的经典算法:

include

using namespace std;

int main(void)

{

long long a,b,p;

cin>>a>>b>>p;

int ras=1%p;

while(b)

{

if(b&1) ras=ras*1ll*a%p;
a=a*1ll*a%p;
b>>=1;

}

cout<<ras<<endl;

return 0;

}

分析,我其实也不懂为啥这样,但是记住模板就可以了(emo)!

目录
相关文章
|
23天前
学习使用按位异或 ^
学习使用按位异或 ^。
29 9
|
5月前
2^x modn=1
2^x modn=1
27 0
|
5月前
|
算法
HJ108 求最小公倍数
HJ108 求最小公倍数
41 0
|
5月前
|
人工智能 Java BI
快速幂讲解
快速幂讲解
42 0
|
物联网
快速幂
快速幂
79 0
|
算法 C++
求一个数n次方后的末尾数(数论/快速幂)
hdu1061-Rightmost Digit hdu1097-A hard puzzle 这两个oj题目思路几乎一样,都是为了快速求出一个数n次方后的末尾数为都多少?
229 0
求一个数n次方后的末尾数(数论/快速幂)