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)!

目录
相关文章
|
3月前
学习使用按位异或 ^
学习使用按位异或 ^。
44 9
|
机器学习/深度学习 算法
【Leetcode】面试题 16.05. 阶乘尾数、HJ7 取近似值
目录 面试题 16.05. 阶乘尾数 HJ7 取近似值
80 0
|
8月前
leetcode-372:超级次方(快速幂的实现以及取余的规则和推导)
leetcode-372:超级次方(快速幂的实现以及取余的规则和推导)
56 0
华华教月月做数学 两种方法: (快速幂+快速乘) (__int128+快速幂)
华华教月月做数学 两种方法: (快速幂+快速乘) (__int128+快速幂)
69 0
算法--递归辗转相除法求最大公约数
算法--递归辗转相除法求最大公约数
|
算法 C++
求一个数n次方后的末尾数(数论/快速幂)
hdu1061-Rightmost Digit hdu1097-A hard puzzle 这两个oj题目思路几乎一样,都是为了快速求出一个数n次方后的末尾数为都多少?
254 0
求一个数n次方后的末尾数(数论/快速幂)
|
机器学习/深度学习
计算机中的数学【费马大定理】 数学史上最著名的定理: x^n + y^n = z^n(n >2时,没有正整数解)
费马大定理,又被称为“费马最后的定理”,由17世纪法国数学家皮耶·德·费玛提出。 x^n + y^n = z^n 没有正整数解 (n >2)。 德国佛尔夫斯克曾宣布以10万马克作为奖金奖给在他逝世后一百年内,第一个证明该定理的人,吸引了不少人尝试并递交他们的“证明”。
1917 0