Problem I: GJJ的日常之玩游戏
Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 75 Solved: 7
Submit Web Board
Description
GJJ好无聊啊,于是去找小伙伴玩。。。。
他们现在玩这样个游戏,GJJ和小伙伴n个人站成一排,从左到右依次报数,到达最右端折回继续报数,重复这个过程。直到所有人都报过k的倍数游戏结束。
问:这个游戏能否一直继续下去?
Input
输入数据多组;每组输入一行n和k,(2<=n<=1000000000)输入到文件尾结束.
Output
每组输出一行,能一直继续输出"Yes",否则输出"No".
Sample Input
4 3
3 3
Sample Output
Yes
No
提解:每个都可以到达k的倍数,则
k*x-(2*n-2)*y=C (1<=C<=2*n-2)
必须有解,既gcd(k,2*n-2)==1
#include<bits/stdc++.h>
using namespace std;
int gcd(int a,int b)
{
return b==0?a:gcd(b,a%b);
}
int main()
{
int n,m;
while(scanf("%d%d",&n,&m)!=-1)
{
if(gcd(2*n-2,m)==1)
puts("No");
else
puts("Yes");
}
return 0;
}