错#9#10(72分)
查看原帖
错#9#10(72分)
711031
suyi1111楼主2022/11/7 21:35
#include<bits/stdc++.h>
using namespace std;
int f(int a,int b,int p){
	if(b==1)return a%p;
	if(b%2==0){
		int l=f(a,b/2,p);
		return l*l%p;//当它是偶数时(a^(b/2))^2)
	}else{
		return f(a,(b-1)/2,p)*f(a,(b+1)/2,p)%p;//当它是奇数时((a^(b-1)/2)*(a(b+1)/2)) 
	}/*
	2 3
	(2 1) * (2 2)
	(2)  *  (2 1 * 2 1)
	(2)  *  (2 * 2)*/
}
int main()
{
	long long a,b,sum=1,p;
	scanf("%lld%lld%lld",&a,&b,&p);
	if(p==1||b==0)cout<<a<<"^"<<b<<" mod "<<p<<"="<<1;
	cout<<a<<"^"<<b<<" mod "<<p<<"="<<f(a,b,p);
	return 0;
}

评测记录

2022/11/7 21:35
加载中...