JZOJ 1211. 取石子游戏

Posted zjzjzj

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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  

 

以上是关于JZOJ 1211. 取石子游戏的主要内容,如果未能解决你的问题,请参考以下文章

取石子游戏

取石子游戏

USTC 1213取石子游戏(尼姆博弈)

I - 取石子游戏

HDU 2516 取石子游戏

HDU2177 取(2堆)石子游戏(威佐夫博弈)