本题其实是一个数学题,但是用代码也可以暴力出来,所以尝试一下暴力方式
裴蜀定理
理念:两个数只要互斥,也就是没有公约数,就一定有解
p 和 q的最大公约数是d
那么 ap + bq = d
打表找规律
根据上面定理,我们的暴力目的就比较明确了,我们就是要暴力出
dfs暴力区间的所有数
筛选出两个数的所有倍数,不是两个数的倍数的那个数就是答案。
代码
package lanqiaobei.dp;
import java.util.Scanner;
public class NoNum {
static boolean dfs(int i, int num1, int num2) {
if (i == 0) return true;
if (i >= num1 && dfs(i - num1, num1, num2) ) return true;
if (i >= num2 && dfs(i- num2, num1, num2) ) return true;
return false;
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int m = sc.nextInt();
int res = 0;
for (int i = 1; i <= 1000; i++)
{
if (dfs(i, n, m) == false) res = i;
}
System.out.println(res);
}
}
注意
&& 全真才真,一假则假
i >= num1 非常重要,如果去掉就会死循环,因为会不断减,换个角度,如果这个数小于num1,说明它就是我们要找的数。