51nod1066(bash博弈)
题目链接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1066
题意:中文题诶~
思路:感觉博弈全靠yy~
在双方都没有失误的前提下,谁最后会赢。那么我们可以直接选择其中一个人(我选的B啦~),尽量使他赢,如果其无论如何都不能赢的话就是对方赢咯~
我们可以给n分情况讨论一下,如果n=k的话,那么B会输掉(因为题目里A先手啦,直接拿完),也就是A赢,如果n=k+1,因为最懂只能一次拿k个石子,A拿完后一定会留下数目不大于k的石子,B可以直接拿完,所以就是B赢啦,k+2<=n<2*(k+1),A会先拿掉一定数目的石子使剩下的石子数目为k+1,那么接下来无论B如何拿都会剩下数目不大于k的石子,下一轮中A就可以直接拿完剩下的所有石子,所以这种情况下B一定会输咯~
对于n>=2*(k+1)的情况,当n=a*(k+1)时,在每一轮中,无论A先拿走多少石子,B都可以拿走一定数目的石子使剩下的石子仍为(k+1)的整倍数,那么在最后一轮中会有k+1个石子,就是前面讨论的情况啦;当n=a*(k+1)+c(c<k)时,A可以先拿走c个石子,那么当B开始拿石子时石子的数目为a*(k+2),就和前面的情况一样了啦,只不过A和B交换了一下角色;所以最后A会赢啦~
代码:
#include <bits/stdc++.h>
using namespace std; int main(void){
int t, n, k;
scanf("%d", &t);
while(t--){
scanf("%d%d", &n, &k);
if(n%(k+)){
printf("A\n");
}else{
printf("B\n");
}
}
return ;
}
51nod1066(bash博弈)的更多相关文章
- POJ Football Game 【NIMK博弈 && Bash 博弈】
Football Game Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 451 Accepted: 178 Descr ...
- HDU 2188 基础bash博弈
基础的bash博弈,两人捐钱,每次不超过m,谁先捐到n谁胜. 对于一个初始值n,如果其不为(m+1)的倍数,那么先手把余数拿掉,后继游戏中不管如何,后手操作后必定会有数余下,那么先手必胜,反之后手必胜 ...
- HDU 1525 类Bash博弈
给两数a,b,大的数b = b - a*k,a*k为不大于b的数,重复过程,直到一个数为0时,此时当前操作人胜. 可以发现如果每次b=b%a,那么GCD的步数决定了先手后手谁胜,而每次GCD的一步过程 ...
- HDU 2897 邂逅明下 ( bash 博弈变形
HDU 2897 邂逅明下 ( bash 博弈变形 题目大意 有三个数字n,p,q,表示一堆硬币一共有n枚,从这个硬币堆里取硬币,一次最少取p枚,最多q枚,如果剩下少于p枚就要一次取完.两人轮流取,直 ...
- bash 博弈
转载并修改自: http://www.cnblogs.com/wulangzhou/archive/2013/03/14/2959660.html 简单的取拿游戏一堆石子(或者其它的什么东西),下面是 ...
- 51Nod 1067 Bash博弈V2
这道题告诉我,一定要去尝试,去推算,不要动不动就找度娘要答案.(惭愧惭愧) 既然是博弈问题,按理我们应该找出规律,怎么找呢,推,把前几项写出来找规律,动手很重要. 上题: 1067 Bash游戏 V2 ...
- 51nod_1831: 小C的游戏(Bash博弈 找规律)
题目链接 此类博弈不需要考虑sg函数,只需要确定必胜态和必败态,解题思路一般为打败先打表找规律,而后找规律给出统一的公式.打表方式:给定初始条件(此题中为ok[0]=ok[1]=0),然后从低到高枚举 ...
- (Bash博弈 大数) 51nod1068 Bash游戏 V3
1068 Bash游戏 V3 有一堆石子共有N个.A B两个人轮流拿,A先拿.每次拿的数量只能是2的正整数次幂,比如(1,2,4,8,16....),拿到最后1颗石子的人获胜.假设A B都非常聪明 ...
- (Bash博弈)51nod1067 Bash游戏 V2
1067 Bash游戏 V2 有一堆石子共有N个.A B两个人轮流拿,A先拿.每次只能拿1,3,4颗,拿到最后1颗石子的人获胜.假设A B都非常聪明,拿石子的过程中不会出现失误.给出N,问最后谁能赢得 ...
随机推荐
- HDU 3911 线段树区间合并、异或取反操作
题目:http://acm.hdu.edu.cn/showproblem.php?pid=3911 线段树区间合并的题目,解释一下代码中声明数组的作用: m1是区间内连续1的最长长度,m0是区间内连续 ...
- Xcode 6制作动态及静态Framework和各种坑
Xcode 6制作动态及静态Framework http://www.cocoachina.com/ios/20141126/10322.html 有没有写SDK或者要将一些常用的工具类做成Frame ...
- C# 属性和索引
//用索引取一个记录中的各项 using system; class IndexerRecord{ private string[] data= new string [6]; private str ...
- android开发中获取<meta-data>数据
在 AndroidManifest.xml 中,<meta-data>元素是一个键值对,往往被包含在<application> .<activity>.<se ...
- BestCoder Round #61 1001 Numbers
Problem Description There are n numbers A1,A2....An{A}_{1},{A}_{2}....{A}_{n}A1,A2....An,yo ...
- Hibernate中的GetCurrentSession()方法
从3.0.1版本开 始,Hibernate增加了SessionFactory.getCurrentSession()方法. 采用getCurrentSession()创建的session在commit ...
- 【GoLang】GoLang 中 make 与 new的区别
make.new操作 make用于内建类型(map.slice 和channel)的内存分配.new用于各种类型的内存分配. 内建函数new本质上说跟其它语言中的同名函数功能一样:new(T)分配了零 ...
- HTML5之sessionStorage
http://www.css88.com/archives/tag/sessionstorage http://blog.csdn.net/qxs965266509/article/details/1 ...
- spring + myBatis 常见错误:@Autowired注解失败
今天配置spring+myBatis的时候,使用注解@Autowired把持久层dao注入service层的时候总是报错. 查了好久才发现,居然是配置文件路径写错了.basepackge的路径一定要正 ...
- Storm集成Kafka应用的开发
我们知道storm的作用主要是进行流式计算,对于源源不断的均匀数据流流入处理是非常有效的,而现实生活中大部分场景并不是均匀的数据流,而是时而多时而少的数据流入,这种情况下显然用批量处理是不合适的,如果 ...