码迷,mamicode.com
首页 > 编程语言 > 详细

0x01 基本算法-位运算 a^b

时间:2020-11-19 13:00:22      阅读:21      评论:0      收藏:0      [点我收藏+]

标签:include   简单   ace   inf   模板题   图片   names   return   https   

题目链接:a^b

技术图片

题目分析:

简单数论,快速幂模板题

代码如下:

#include<bits/stdc++.h>

using namespace std;

#define  mm(a,x) memset(a,x,sizeof a)
#define  mk make_pair
#define ll long long
#define pii pair<int,int>
#define inf 0x3f3f3f3f

ll a,b,mod;

ll qmi(ll a,ll b){
	ll ans = 1 % mod;
	// Eg:b是a的k次方的中的k的二进制表示  (k = (10110)2)  a^k = a^2^0+a^2^1+a^2^2+...a^2^n
	while(b){
		//如果b的二进制数最后一位是1
		if(b&1) ans = ans * a % mod;
		//a的k次方 
		a = a * a % mod;
		//将b的最后一位数去掉
		b>>=1;
	}
	return ans;
}
int main() {
	cin >> a >> b >> mod;
	cout<<qmi(a,b);	
	return 0;
}

0x01 基本算法-位运算 a^b

标签:include   简单   ace   inf   模板题   图片   names   return   https   

原文地址:https://www.cnblogs.com/bingers/p/13974985.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!