題目大意:找到一個數的倍數並且這個數只能由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);
}