求助第二问
查看原帖
求助第二问
544571
Locix_Elaina_Celome楼主2022/7/12 08:56

rt,不用管一、三问,帮忙看一下第二问的错误,谢谢

#include<iostream>
using namespace std;
int f(int m,int n,int p){
	if(m == 1)return n;
	int x=f(m/2,n,p)%p;
	if(m%2 == 0){
		return (x%p)*(x%p)%p;
	}
	return ((x%p)*(x%p)%p)*n%p;
}
int exgcd(int a,int b,int x,int y){
	if(b == 0){
		x=1;
		y=0;
		return a;
		
	}
	int ans=exgcd(b,a%b,y,x);
	y-=a/b*x;
	return ans;
}
int main(){
	int t,k;
	cin>>t>>k;
	for(int i=1;i<=t;i++){
		int y,z,p;
		cin>>y>>z>>p;;
		if(k == 1){
			cout<<f(z,y,p)<<endl;
		}
		
		if(k == 2){
			int a=y,b=p,c=z;
			int xn,yn;
			int gcd=exgcd(a,b,xn,yn);
			if(c%gcd!=0){
				cout<<"Orz, I cannot find x!\n";
				continue;
			}
			cout<<(xn*c%b+b)%b<<endl;
		}
	}
	
}
2022/7/12 08:56
加载中...