【HDOJ5512】Pagodas(数论)

题意:给定n,a,b,一开始集合里面有两个数:a和b,然后两个人轮流往这个集合里面增加数字

增加数字的原则是:这个集合里面任选两个数的和或差(a + b或a - b或b -a的中的任意一个没被选中的属于[1,n]的点 ),集合里面的数字不能重复,同时这个数字不能大于n,求先后手胜负关系

2<=n<=5e4,1<=a,b<=n

思路:队友写的,抱大腿

[1,n]中gcd(a,b)的倍数一定能被取到

所以只要判断倍数个数的奇偶性即可

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 #define LL long long  
 4 int main()
 5 {
 6     int T;
 7     scanf("%d",&T);
 8     int cas=0;
 9     while(T--)
10     {
11         int n,a,b;
12         scanf("%d%d%d",&n,&a,&b);
13         int g=__gcd(a,b);
14         printf("Case #%d: ",++cas);
15         if((n/g-2)&1)
16             printf("Yuwgna
");
17         else
18             printf("Iaka
");
19     }    
20 } 
原文地址:https://www.cnblogs.com/myx12345/p/9885351.html