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;
    }
}