HDU-1846 Brave Game(巴什博奕)

来源:互联网 发布:简单冒泡排序算法 编辑:程序博客网 时间:2024/06/05 03:49

题目链接

HDU-1846 Brave Game

题目大意

有n个石子,两人轮流进行取石子,每次可以取走\(1~m\)个石子,最先取光石子的一方为胜,输出胜者?

Sample Input

2
23 2
4 3

Sample Output

first
second

思路

直接就是:巴什博奕。
①当n<=m时,先手可以一次取完,则先手必胜。
②当n==m+1时,先手不管怎么取都会使剩余的石子nn1<=nn<=m,则先手必败。
③当m+1<n<2(m)+1时,先手可以取石子,使得石子只剩m+1个,则先手必胜。
④当n==2(m+1)时,先手不管怎么取都会使剩余的石子nnm+2<=nn<=2m+1,则先手必败。
……
则先手的必胜策略是每次使剩余石子为m+1的整数倍,如果不能则先手必败。

代码

#include <cstdio>#include <cstring>#include <algorithm>using namespace std;int n,m;int main() {    int T;    scanf("%d",&T);    while(T-->0) {        scanf("%d%d",&n,&m);        printf("%s\n",(n%(m+1))==0?"second":"first");    }    return 0;}
0 0
原创粉丝点击