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;
}
}
}