题目
分析
第一个数肯定是1,后面我们给他添加0或者添加1
代码
#include<bits/stdc++.h>
using namespace std;
int n;
long long sum;
bool ok;
//cnt表示选了几位数了,sum表示当前组成的数字是多少,注意sum会超出int的范围,要使用long long表示
void dfs(int cnt,long long sum){
if(ok){//最优性剪枝,当找到一种可能性时,就没有必要继续往下搜索了
return ;
}
if(cnt>=19){//长度大于19时,结束
return ;
}
if(cnt<19 && sum%n==0 && sum!=0){//找到符合答案
ok=true;
cout<<sum<<endl;
}
dfs(cnt+1,sum*10); //在末尾加上0
dfs(cnt+1,sum*10+1);//在末尾加上1
}
int main(){
cin>>n;
dfs(0,1);
// cout<<ans<<endl;
return 0;
}