Problem A: 小火山的跳子游戏 多校训练2(小火山专场)(周期)

题目链接:http://acm.zzuli.edu.cn/zzuliacm/problem.php?cid=1158&pid=0

zzuli 1905

 题意:如果k=1的话是1,2,3,4...n-1,n,n-1...3,2,1。可以看出这个周期是2*n-2,所以只要gcd(2*n-2, k)==1就是可以全部标记完的。

因为走到一个走过的并且方向一样并且没有标记全部的话就不可能能标记完了,所以要走2*n-2次没有重复位置和方向的,也就是gcd(2*n-2,k)==1.

Sample Input

2
6 4
2 1
Sample Output

No
Yes

************************************************

 1 #include<iostream>
 2 #include<algorithm>
 3 #include<cstdio>
 4 #include<cstring>
 5 #include<queue>
 6 #include<stdlib.h>
 7 #include<map>
 8 #include<cmath>
 9 
10 using namespace std;
11 
12 #define N 5500
13 #define INF 0x3f3f3f3f
14 
15 int main()
16 {
17     int T,n,k,ans;
18 
19     scanf("%d", &T);
20 
21     while(T--)
22     {
23         scanf("%d%d", &n,&k);
24 
25         if(k==1)
26         {
27             printf("Yes
");
28             continue ;
29         }
30 
31         ans=gcd((n-1)*2,k);
32 
33         if(ans==1)
34             printf("Yes
");
35         else
36             printf("No
");
37     }
38     return 0;
39 }
原文地址:https://www.cnblogs.com/weiyuan/p/5757049.html