快速幂
题目链接

题目描述

输入b,p,k的值,求b^p mod k的值。其中b,p,k*k为长整型数。

输入输出格式

时空限制

  • 时间:1000ms
  • 空间:128MB

代码

#include <iostream>
#include <cstdio>
using namespace std;
typedef long long LL;

//求 a^b % m,迭代写法
LL binaryPow(LL a, LL b, LL m){
	LL ans = 1;
	while(b > 0){
		if(b & 1){  //位运算,比模2运算快 
			ans  = ans*a%m;
		}
		a = a*a%m;
		b >>= 1;
	}
	return ans;
} 
int main(){
	LL b,p,k;
	scanf("%lld%lld%lld",&b,&p,&k);
	LL result = binaryPow(b,p,k);
	printf("%lld^%lld mod %lld=%lld\n",b,p,k,result);
	return 0;
} 

:最后一个测试点过不了。