小火山的跳子游戲

1905: 小火山的跳子游戲

Time Limit: 1 Sec  Memory Limit: 128 MB
Submit: 462  Solved: 107

SubmitStatusWeb Board

Description

  小火山和火山火山在一塊玩跳子游戲。規則如下:
  1:跳子的起始位置爲0,棋盤大小從1到N
  2:每次跳子跳k步。 例如當前位置爲i, 那麼下一步爲i + k
  3:跳子過程中,碰到1或N則往回跳。例如當前位置爲4, N = 6, K = 5的
時候, 那麼下次跳子, 應該是 5, 6, 5 ,4, 3。最後落在3的位置, 再一次
跳子爲2 1 2 3 4。最後落在4的位置;
  現在小火山想知道經過任意次跳子最後能否將這個棋盤上的每個數字都走過。

Input

輸入第一行是一個整數T(T <= 20000), 表示一共有T組數據。
每一組數據都有兩個整數N, K(1 <= K ,N <= 5000)

Output

對於每組數據,如果可以將這個棋盤上的每個數字都走過則輸出"Yes", 否則輸出"No"

Sample Input

26 42 1

Sample Output

No
Yes

HINT

最開始想到的就是GCD,畫了個圓但是畫到重複點是以爲方向不重要,感覺只要重複出現不論是去還是返回無所謂的。但其實不是,方向不同還是不同的點。相當於一個2n-2個點每次走k個點問能否每個點都走過。這跟HDU1222那個題一樣了。判斷是否互質的問題。與其說太粗心還不如說是做題少。
#include<stdio.h>
int gcd(int a,int b)
{
	if(a%b==0)
	return b;
	else 
	return(gcd(b,a%b));
}
int main()
{
	int t,n,k;
	scanf("%d",&t);
	while(t--)
	{
		scanf("%d%d",&n,&k);
		if(gcd(2*n-2,k)==1)
		printf("Yes\n");
		else
		printf("No\n");
	}
	return 0;
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章