//题目:给定一个数N,求另一最小数M使得N*M为只由0和1构成的数
//解法1:让M从1开始与N相乘,判断相乘的结果是否只由1和0组成(复杂度高)
//解法2:把问题转化为:求最小的只由0,1组成的数,使其对N求模的结果为0
//也就是从1,10,11,100,101,110...依次检查,直到找到对N求模结果为0的数,在使用这个数除以N得到结果
public class Main {
public static void main(String[] args) throws Exception {
System.out.println(findNum(3));
}
public static int findNum(int N){
Queue<Integer> q = new LinkedList<Integer>();
q.add(1); //初始时先向队列中加入第一个数1
while(true){
int temp = q.poll(); //每次从队列中出一个数
if(temp % N == 0){
return temp/N;
}
q.add(temp*10); //将后续的只由0,1构成的数加入队列中
q.add(temp*10+1);
}
}
}
编程之美2.8 找符合条件的整数
最新推荐文章于 2022-04-11 09:17:51 发布