威佐夫博奕
相对于nim游戏的任意堆石子,每次在任意一堆至少取一个。威佐夫博奕有两堆石子,要么在两堆同时取一样的石子,要么在其中一堆取至少一个石子。
其必败态叫做奇异局势:
⌞k1+5‾‾√2⌟,⌞k1+5‾‾√2+k⌟ | k=0,1,2...
可以求得。
下题为判定给定 n,m 是否为奇异局势。
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#include <cmath>
using namespace std;
#define pr(x) cout << #x << ": " << x << " "
#define pl(x) cout << #x << ": " << x << endl;
struct jibancanyang
{
int n, m;
void fun() {
while (~scanf("%d%d", &n, &m)) {
if (n > m) swap(n, m);
bool ok = true;
int k = m - n;
int a = k * (1 + sqrt(5)) / 2;
if (a == n) {
ok = false;
}
printf("%d\n", ok);
}
}
}ac;
int main()
{
#ifdef LOCAL
freopen("in.txt", "r", stdin);
//freopen("out.txt", "w", stdout);
#endif
ac.fun();
return 0;
}