HDU1222——数论
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1222
题目大意:有n个洞,狼从0洞开始检查,并每个m个洞再进去检查,然后题目问兔子有没有安全的洞可以躲。
解题思路:此题主要用到辗转相除法来验证是否存在安全的洞,当gys(n,m)==1的时候,说明狼会把所有洞都看一遍,反之没有。
代码:
1 #include <cstdio> 2 #include <algorithm> 3 #include <iostream> 4 5 6 using namespace std; 7 8 int gys(int a,int b) 9 { 10 return a%b==0?b:gys(b,a%b);//用到最大公约数的思想,看m是否等于1. 11 //参考:http://baike.baidu.com/link?url=ImDOP5GzDqFLDTvBb2SIsosoXQ8PDWZmhzu8t1pZcazRQ0hFFA7n2V6GgOgk-0xK9M1NFo7PyLGe1G-zmLOjAq 12 } 13 14 int main() 15 { 16 int p; 17 int m=0,n=0; 18 scanf("%d",&p); 19 while (p) 20 { 21 p--; 22 scanf("%d%d",&m,&n); 23 if (gys(n,m)==1) 24 printf("NO\n"); 25 else 26 printf("YES\n"); 27 } 28 return 0; 29 }