链接:点击打开链接
题意:输入一个n,求一个由0,1组成的十进制的数是n的倍数
代码:
#include <iostream>
#include <cstdio>
using namespace std;
long long x,sign;
void dfs(long long n,long long num){
if(sign) //找到了就不找了
return;
if(n%x==0){
printf("%I64d\n",n);
sign=1;
return;
}
if(num>=18) //再大的话long long存不下因此不必再搜索
return;
dfs(10*n,num+1); //由0,1组成的就是1*10,1*10+1,(1*10)*10,(1*10)*10+1......
dfs(10*n+1,num+1); //因此很明显的是搜索
}
int main(){
while(scanf("%I64d",&x)!=EOF&&x){
sign=0;
dfs(1,0);
}
return 0;
}