G-奶龙与小七拿石头

G-奶龙与小七拿石头

怎样才能赢呢?答案是对于最后一堆石头,轮到操作的那个人会赢。也就是说对于每一堆石头,轮到这个人操作,他可以拿走 a[i] - 1 颗石头,留一颗给另外那个人,这样就能保证对于以后的每一堆石头,都是这个人先操作,那么这个人必赢。

奶龙怎样才有机会赢呢?只要看看前缀有多少个 1 就好了,如果前缀 1 的个数为偶数,从第一堆石头数量 > 1 开始,就是奶龙先操作,那奶龙必赢。

那如果中间有某些堆的石头数量也为 1 呢?只需要前面 > 1的堆稍微调整一下就行了:先手把前面这一堆全部拿完,后手就只能拿数量为 1 的这堆了。

具体细节草稿纸写几个样例就好了。

#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
const int MAX=1e9+7;

int t,n,m;
int a[1003];
void solve(){
	cin>>n;
	for(int i=1;i<=n;i++)cin>>a[i];
	int ans=1;
	for(int i=1;i<n;i++)
	{
		if(a[i]==1 && ans==1)ans=2;
		else if(a[i]==1 && ans==2)ans=1;
		else if(a[i]!=1)break;
	}
	cout<<ans;
}
int main(){
	ios::sync_with_stdio(false);
	cin.tie(0), cout.tie(0);
	t=1;
	//cin>>t;
	while(t--){
		solve();
	}
	return 0;
}