poj1426 Find The Multiple

来源:互联网 发布:网络主播能做多久 编辑:程序博客网 时间:2024/06/05 11:34

题意:

给一个数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);    }}


原创粉丝点击