HDU5011-Game(博弈)

来源:互联网 发布:淘宝移动端优惠券链接 编辑:程序博客网 时间:2024/05/21 08:02

题目链接


题意:取石子游戏,两个人轮流取石子,取石子有规则,要么那掉这堆石子,要么将这堆石子分成两堆,在加入原来的石堆当中,先手取完算胜利,否则失败。

思路:简单的Nim游戏,所有值异或为0时,先手失败。

代码:

#include <iostream>#include <cstdio>#include <cstring>#include <cmath>#include <algorithm>using namespace std;const int MAXN = 100005;int arr[MAXN];int main() {    int n;    while (scanf("%d", &n) != EOF) {        for (int i = 0; i < n; i++)             scanf("%d", &arr[i]);        int sum = 0;           for (int i = 0; i < n; i++)            sum ^= arr[i];        if (sum == 0)            printf("Lose\n");        else            printf("Win\n");    }    return 0;}


1 2