题意:
给一个数n,让你找出一个只有1,0,组成的十进制数,要求是找到的数可以被n整除。
解题思路:用DFS是搜索 当前位数字 (除最高位固定为1),因为每一位都只有0或1两种选择, 从小往大搜超不出unsigned long long型的范围,每个数都有答案
public class poj1426 {
/**
* 给出一个整数n,(1 <= n <= 200)。求出任意一个它的倍数m,要求m必须只由十进制的'0'或'1'组成。
从小往大搜超不出unsigned long long型的范围,每个数都有答案
*/
static int n,flag;
public static void main(String args[]){
Scanner scanner=new Scanner(System.in);
while (scanner.hasNext()){
n=scanner.nextInt();
if(n==0){
break;
}
flag=0;
dfs(1,0);
}
}
private static void dfs(long a, int step) {
if(flag==1||step>=19){
return ;
}
if(a%n==0){
flag=1;
System.out.println(a);
return ;
}
dfs(a*10,step+1);//搜索只有两个可能0或者1
dfs(a*10+1,step+1);
}
}