杭电1222

题意:0,1,2......(n-1)一共n个洞环绕一个小岛,狼从0开始每m个洞搜寻一个,问是否存在狼搜不到的洞。

Analyse:m=xd,n=yd,所以有ym=xn,表示一个搜索周期会经过xn个洞,若n与m的最大公约数d为1,则一个周期经过的洞数为mn(即m圈),因为每一圈搜的洞数为n/m,全部洞搜完的圈数为n/(n/m)=m,这就表示已经把所有洞搜遍。所以gcd(m,n)=1是搜遍所有洞的充要条件。

View Code
 1 #include<stdio.h>
 2 int gcd(int a,int b)
 3 {
 4     int temp;
 5     if(a<b)
 6     {
 7         temp=a;
 8         a=b;
 9         b=temp;
10     }
11     while(a%b)
12     {
13         temp=a%b;
14         a=b;
15         b=temp;
16     }
17     return b;
18 }
19 int main()
20 {
21     int n,m,c;
22     scanf("%d",&c);
23     while(c--)
24     {
25         scanf("%d%d",&m,&n);
26         if(gcd(n,m)==1)
27             printf("NO\n");
28         else
29             printf("YES\n");
30     }
31     return 0;
32 }
posted @ 2012-07-21 16:16  Hogg  阅读(199)  评论(0)    收藏  举报