如题,这样写
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int t;
ll n,a,b;
int main(){
cin>>t;
while(t--){
cin>>n>>a>>b;
if(a==1){
if(n%b==1)cout<<"Yes"<<endl;
else cout<<"No"<<endl;
continue;
}
if(b==1){
cout<<"Yes"<<endl;
continue;
}
bool flag=false;
ll p=1;
for(;;){
if(p>n)break;
if(p%b==n%b){
flag=true;
break;
}
p*=a;
}
if(flag)cout<<"Yes"<<endl;
else cout<<"No"<<endl;
}
}
就会WA at case 2;这样写
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int t;
ll n,a,b;
int main(){
cin>>t;
while(t--){
cin>>n>>a>>b;
bool flag=false;
ll p=1;
for(int i=0;i<30;i++){
if(p<0||p>n)break;
if(p%b==n%b){
flag=true;
break;
}
p*=a;
}
if(flag)cout<<"Yes"<<endl;
else cout<<"No"<<endl;
}
}
就能通过。请问这是为什么?