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  }

 

转载于:https://www.cnblogs.com/zjzjzj/p/11187418.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值