“科大讯飞杯”第十七届同济大学程序设计预选赛暨高校网络友谊赛 A-张老师和菜哭武的游戏(GCD)

地址:https://ac.nowcoder.com/acm/contest/5477/A

 

 

     解析:刚开始,集合里有a,b。然后张拿了一个数p,满足a+b/a-b,放入集合。不断进行的话,集合里就会存在各种的a*x+b*y了。所以如果p可以被拿走,是要满足:a*x+b*y=p的。那么p就是gcd(a,b)的倍数(因为x,y可能是负数)。n/gcd(a,b)可以求出1-n中有几个数是gcd(a,b)的倍数,如果有奇数个,根据游戏顺序,张老师胜,否则输。

//从新开始~
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<map>
using namespace std;
typedef long long ll;
const int maxn=2e5+10;
int main()
{
    int t;
    cin>>t;
    while(t--)
    {
        int n,a,b;
        cin>>n>>a>>b;
        if(n/(__gcd(a,b))%2!=0)
            cout<<"Yes"<<endl;
        else
            cout<<"No"<<endl;
    }
} 

 

posted @ 2020-05-11 18:51  liyexin  阅读(154)  评论(0编辑  收藏  举报