1.gcd
递归实现
int gcd(int i,int j)
{
if(j==0) return i;
else return gcd(j,i%j);
}
2、lcm
int gcd(int i,int j)
{
if(j==0) return i;
else return gcd(j,i%j);
}
int lcm(int i ,int j)
{
return i*j/gcd(i*j);
}
3.
E - Wolf and Rabbit
兔子坑问题
There is a hill with n holes around. The holes are signed from 0 to n-1.A rabbit must hide in one of the holes. A wolf searches the rabbit in anticlockwise order. The first hole he get into is the one signed with 0. Then he will get into the hole every m holes. For example, m=2 and n=6, the wolf will get into the holes which are signed 0,2,4,0. If the rabbit hides in the hole which signed 1,3 or 5, she will survive. So we call these holes the safe holes.
InputThe input starts with a positive integer P which indicates the number of test cases. Then on the following P lines,each line consists 2 positive integer m and n(0<m,n<2147483648).
OutputFor each input m n, if safe holes exist, you should output "YES", else output "NO" in a single line.
Sample Input
2
1 2
2 2
Sample Output
NO
YES
题目意思:狼抓兔子,输入m,n,狼能进入每相距为m的洞,洞的编号为0——n-1,如果狼每个洞都能进入,兔子就会被吃,问:兔子能不能存活?
如果狼每一个洞都能进去,兔子才会必死无疑,即在剔除m为1,这种特殊情况后,m,n,不能存在倍数关系,那么狼便能进入每一个洞,即他们的最大公约数为1.
#include <iostream>
using namespace std;
int gcd(int i,int j)
{
if(j==0) return i;
else return gcd(j,i%j);
}
int main()
{
long long t,m,n;
cin>>t;
while(t--)
{
cin>>m>>n;
if(gcd(m,n)==1)
cout<<"NO"<<endl;
else cout<<"YES"<<endl;
}
}