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月前
学习使用按位异或 ^
学习使用按位异或 ^。
45 9
|
机器学习/深度学习 算法
【Leetcode】面试题 16.05. 阶乘尾数、HJ7 取近似值
目录 面试题 16.05. 阶乘尾数 HJ7 取近似值
80 0
|
算法
双指针法将时间复杂度从 O(n^2) 优化到 O(n)
 双指针法(Two Pointers)是一种常见的算法技巧,常用于数组和链表等数据结构中。
100 0
华华教月月做数学 两种方法: (快速幂+快速乘) (__int128+快速幂)
华华教月月做数学 两种方法: (快速幂+快速乘) (__int128+快速幂)
69 0
PTA 7-4 素数等差数列 (20 分)
2004 年,陶哲轩(Terence Tao)和本·格林(Ben Green)证明了:对于任意大的 n,均存在 n 项全由素数组成的等差数列。
128 0
|
算法 C++
|
机器学习/深度学习
计算机中的数学【费马大定理】 数学史上最著名的定理: x^n + y^n = z^n(n >2时,没有正整数解)
费马大定理,又被称为“费马最后的定理”,由17世纪法国数学家皮耶·德·费玛提出。 x^n + y^n = z^n 没有正整数解 (n >2)。 德国佛尔夫斯克曾宣布以10万马克作为奖金奖给在他逝世后一百年内,第一个证明该定理的人,吸引了不少人尝试并递交他们的“证明”。
1919 0