赞
踩
嘟嘟是个爱吃糖的小孩。某一天嘟嘟的糖果吃完了,他想要去糖果店买糖果,正好遇到糖果店店长正在搞活动。
活动内容是跟店长玩一个游戏,赢了的话就能免费拿到糖果大礼包了,这可是买不到的那种稀有糖果。嘟嘟顿时兴奋了起来。
游戏的内容是这样的,店长的桌子上n 种糖果,每种糖果 Xi ( 1 ≤ i ≤ n ) 个。玩家跟店长双方轮流吃糖,一次吃一颗,谁最后没糖可吃就输了。
但是店长又加了一个条件,就是如果对方上一次吃了第 i 种糖果,则己方此次就不能吃第 i 种糖果(如果是游戏开局第一个人则可以吃任意种类的糖果)。并且店长总是先手。
聪明的嘟嘟看了下店长桌子上放的糖果,他知道糖果店老板是一个极度聪明的人,但是又不想放弃糖果大礼包,陷入了纠结。请你告诉嘟嘟,他能否有绝对的把握拿到糖果大礼包。
第一行输入一个整数n,代表糖果种类。 第二行输入n个整数Xi,代表第i种糖果数量。 (1 ≤ n ≤104, 1 ≤ Xi ≤ 104)
如果嘟嘟能赢得游戏拿下糖果大礼包,则输出"必拿下!",否则输出"可惜"。(输出不带双引号)
3
1 2 1
必拿下!
博弈论,判断总数是奇偶,偶数必赢。根据题目中的规则还需判断n是否大于1,和里面的最大值是否小于于总数的一半。如果都符合则能赢。(感谢大佬指出错误)
#include<bits/stdc++.h> using namespace std; int main(){ int n, a,ans = 0, maxn = 0; cin>>n; for(int i = 0; i < n; i++){ cin>>a; maxn = max(maxn, a); ans =ans +a; } if(ans % 2 == 0 && n > 1 && maxn <= ans / 2){ cout<<"必拿下!"; }else{ cout<<"可惜"; } }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。