JZOJ 1211. 取石子游戏

题目

Description

     Jby考完了高考以后,一度闷得发颠…. 无聊之际,发明了一个新的取石子游戏! 规则如下,一共有N颗石子,每次最多可以取走K颗(不能不取),最先取不到的人算输(就是说谁取完谁就赢)。 为了延长这个游戏的时间,Jby弄来了整个宇宙的石子(挺够本事的…)…
 

Input

输入数据存放在文本文件game.in中
题目有T组数据
第一行为整数T(T<=20)
以下T行,两个整数K,N

Output

   输出数据存放在文本文件game.out中
   先行者有必胜策略输出“Yes”,否则输出“No”

 

Sample Input

2
2 3
3 2

Sample Output

No
Yes

 

Data Constraint

 数据范围
20%的数据  K≤10  N≤30,000,000
50%的数据   K≤100  N≤2^31-1
100%的数据  K≤1000  N≤10^1000

分析

  • 显然博弈论的题 四种常见之一

  • 但是输入的n可能很大,用快读边读边%就好了

 

代码

 

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 long long n,k;
 4 inline int read(){
 5     int x=0,f=1;
 6     char ch=getchar();
 7     while(ch<'0'||ch>'9'){
 8         if(ch=='-')
 9             f=-1;
10         ch=getchar();
11     }
12     while(ch>='0'&&ch<='9'){
13         x=((x<<1)+(x<<3)+(ch^48))%(k+1);
14         ch=getchar();
15     }
16     return x*f;
17 }
18 int main ()
19 {
20     freopen("game.in","r",stdin);
21     freopen("game.out","w",stdout);
22     long long T;
23     cin>>T;
24     while (T)
25     {
26         T--;
27         cin>>k;
28         n=read();
29         if (n%(k+1)==0) cout<<"No"<<endl;
30         else cout<<"Yes"<<endl;
31     }
32  }

 

posted @ 2019-07-15 10:29  Melted_czj  阅读(205)  评论(0编辑  收藏  举报
body { background-color:whitesmoke; } // 修改背景颜色为半透明 #home,#sideBarMain>div,#blog-sidecolumn>div>div,.catListView{ background-color:rgba(255,255,255,0); } // 修改其他边框的颜色