Description
随着科技的发展,某国家准备修建一座高楼,高度为n(n<=1e18),来展现他们国家的强大国力,他们国家有两支强大的施工队,国家于是把修建计划给了这两只施工队,为了提高施工队的积极性,国家会特殊奖励最后完成施工的,两只施工的施工计划是两只施工队轮流工作,由于施工队实力有限,每天只能修建1-m(m<=1e18)层,假如两只施工队都非常聪明,问首先施工的那只队伍能不能获得奖励,能输出YES,不能输出NO
Input
数据的组数 T;(T<=3000)
接下来T行,每行一个n m, 楼的高度,最大修建层数 (n,m<=1e18)
Output
每行一个单独的YES或者NO;
Sample Input
2 2 1 6 4
Sample Output
NO YES
HINT
题解
两只队伍都非常聪明,知道如何使自己赢,每个人取的都是1~m个
无论第一支队伍取多少个,第二支队伍都能使两只队伍的和为1+m 个
故 n为m+1的倍数或者0时候,先手必输,其余先手必赢.
#include<bits/stdc++.h>
using namespace std;
int main()
{
// freopen("cc.in","r",stdin);
// freopen("in.out","w",stdout);
long long n,m;
int t; cin>>t;
while(t--)
{
cin>>n>>m;
if(n%(m+1)==0) cout<<"NO"<<endl;
else cout<<"YES"<<endl;
}
}