题目链接:https://vjudge.net/contest/125308#problem/F
题意:狼捉兔子,兔子躲在n个洞中一个,这n个洞围成一个圈,狼会从第0号洞开始,搜索隔m的洞,一直搜索下去,问是否存在洞另狼永远搜索不到,这样兔子就重获新生。
刚开始没有思路,就瞎画了八个洞的图,然后m从1—7去找 发现只要 m能够整除n 就能活 也就是是求输入的两个数是否互质即最大公约数是否为1.为1不能活
AC代码:
1 import java.io.BufferedReader; 2 import java.io.IOException; 3 import java.io.InputStream; 4 import java.io.InputStreamReader; 5 import java.io.PrintWriter; 6 import java.util.StringTokenizer; 7 8 public class Main { 9 public static void main(String[] args) { 10 11 InputReader s = new InputReader(System.in); 12 PrintWriter cout = new PrintWriter(System.out); 13 int t , x, y, t1 ; 14 t = s.nextInt(); 15 while (t-- > 0) { 16 x = s.nextInt(); 17 y = s.nextInt(); 29 t1 = gcd(x,y); 30 if(t1!=1) 31 System.out.println("YES"); 32 else System.out.println("NO"); 33 } 34 cout.flush(); 35 } 36 37 static int gcd(int a, int b) { 38 return b == 0 ? a : gcd(b, a % b); 39 } 40 } 41 42 class InputReader { 43 44 public BufferedReader rea; 45 public StringTokenizer tok; 46 47 public InputReader(InputStream stream) { 48 rea = new BufferedReader(new InputStreamReader(stream), 32768); 49 tok = null; 50 } 51 52 public String next() { 53 while (tok == null || !tok.hasMoreTokens()) { 54 try { 55 tok = new StringTokenizer(rea.readLine()); 56 } catch (IOException e) { 57 throw new RuntimeException(e); 58 } 59 } 60 return tok.nextToken(); 61 } 62 63 public int nextInt() { 64 return Integer.parseInt(next()); 65 } 66 67 }