题目大意:找到一个数的倍数并且这个数只能由1和0组成
思路:dfs递归查找,两种dfs的走法
#include<stdio.h>
int flag=0;
int n;
void dfs(int i,unsigned long long j);
int main(void)
{
while(scanf("%d",&n),n){
flag=0;
dfs(0,1);
}
return 0;
}
void dfs(int i,unsigned long long j){//使用i防止一条路走到黑 long long 最大有19位
if(flag||i==19)//判断位数是否达到最大或者是否已经找到
return ;
if(j%n==0){//判断这个数是不是符合条件
printf("%lld\n",j);
flag=1;
return ;
}
dfs(i+1,j*10);//两种走法
dfs(i+1,j*10+1);
}