传送门:点击打开链接
题意:轮流取石子。1.在一堆中取任意个数.2.在两堆中取相同个数。最后取完的人胜利,问先手是否必赢
思路:威佐夫博弈博弈,满足黄金分割,且每个数字只会出现一次。具体求法见代码
#include<map>
#include<set>
#include<cmath>
#include<ctime>
#include<stack>
#include<queue>
#include<cstdio>
#include<cctype>
#include<string>
#include<vector>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<functional>
#define fuck(x) cout<<"["<<x<<"]"
#define FIN freopen("input.txt","r",stdin)
#define FOUT freopen("output.txt","w+",stdout)
using namespace std;
typedef long long LL;
int main() {
int a, b; //FIN;
while(~scanf("%d%d", &a, &b)) {
if(a >= b) swap(a, b);
int k = b - a;
int x = (sqrt(5.0) + 1) / 2 * k, y = x + k;
if(a == x && b == y) printf("0\n");
else printf("1\n");
}
return 0;
}