首页 > 技术文章 > Applese 的取石子游戏( nim博弈 )

Romantic-Chopin 2019-01-29 17:54 原文

链接:https://ac.nowcoder.com/acm/contest/330/A
来源:牛客网
 

Applese 和 Bpplese 在玩取石子游戏,规则如下:

一共有偶数堆石子排成一排,每堆石子的个数为 aiai。两个人轮流取石子,Applese先手。每次取石子只能取最左一堆或最右一堆,且必须取完。最后取得的石子多者获胜。假设双方都足够聪明,最后谁能够获胜呢?

输入描述:

第一行是一个正偶数 n,表示石子的堆数。
第二行是 n 个正整数 a1,a2,…,ana1,a2,…,an,表示每堆石子的个数。

输出描述:

输出一个字符串“Applese”或“Bpplese”,表示胜者的名字。

示例1

输入

复制

4
2 3 3 3

输出

复制

Applese

备注:

2≤n≤1052≤n≤105
1≤ai≤1051≤ai≤105
∑ai∑ai 为奇数

博弈论之NIM博弈。

当  a1 XOR a2 XOR……XOR an !=0 ->先手必胜态

当  a1 XOR a2XOR……XOR an==0 ->先手必败态

NIM博弈不存在平局

#include<iostream>
using namespace std;
typedef long long LL;

int main()
{
	LL n,m,j,k,i,T,x,y;
	cin>>n;
	LL ans=0;
	cin>>x;
	for (i=0;i<n-1;i++)
	{
		cin>>y;
		x = x^y;
	}
	if (x==0)
	cout<<"Bpplese"<<endl;
	else
	cout<<"Applese"<<endl;
	return 0;
}

 

 

推荐阅读