这段代码会WA #5 和 #7:
#include<bits/stdc++.h>
using namespace std;
long long n,m=1e18;
void pd(long long a){
if(a>1e18 || a<1) return;
if(a%n==0) m=min(m,a/n);
pd(a*10);
pd(a*10+1);
}
int main(){
cin>>n;
pd(1);
cout<<m;
return 0;
}
但把 pd 函数改成这样:
if(a>1e18 || a<1) return;
if((a*10)%n==0) m=min(a*10/n,m);
if((a*10+1)%n==0) m=min((a*10+1)/n,m);
pd(a*10);
pd(a*10+1);
这样就能AC了,请问为什么判断条件不能直接改成 a%n==0 ?