莫名AC,求助
查看原帖
莫名AC,求助
555809
houmy楼主2023/10/12 19:54

如题,这样写

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

就能通过。请问这是为什么?

2023/10/12 19:54
加载中...