COCI【2017-2018#1】纸牌游戏

描述

小凯撒喜欢玩纸牌游戏,每次他去萨格勒布都会和他的朋友们玩 21 21 21 点,这是一种很流行的纸牌游戏。

这个游戏的规则是,在纸牌点数之和小于 21 21 21 点之前可以连续抓牌,如果决定不抓牌,则喊 DOSTA

游戏开始时,桌面有 52 52 52 张牌 —— 13 13 13 种不同牌面的牌,每种有 4 4 4 个花色。牌面分别是 2 , 3 , … , J , Q , K , A 2,3,…,J,Q,K,A 2,3,,J,Q,K,A。它们的点数计算规则是:牌面上的数字就是点数(比如, 9 9 9 的点数就是 9 9 9),特殊地, J , Q , K J,Q,K J,Q,K 都算 10 10 10 点, A A A 11 11 11 点。

凯撒认为游戏的乐趣在于,当抓了 N N N 张牌之后,如果点数之和小于或等于 21 21 21,他就要思考是否要再多抓一张。假设 X X X 是已抓牌点数之和与 21 21 21 之间相差的点数值,我们知道,如果桌面上的剩余牌中点数大于 X X X 的纸牌数量比小于等于 X X X 的纸牌数量要多,或两者一样多,那就不应该再抓牌了。

因为凯撒并不擅于计算是否需要抓牌,所以他请你帮他计算和决策。

输入描述

第一行输入一个正整数 N N N ( 1 ≤ N ≤ 52 ) (1\le N \le 52) (1N52),表示凯撒已经抓牌的张数。

接下来 N N N 行每行一个正整数,第 i i i 个正整数是他抓的第 i i i 张牌点数值。

输出描述

如果凯撒应该继续抓牌,输出 VUCI,否则输出 DOSTA

用例输入 1

6
2
3
2
3
2
3

用例输出 1

DOSTA 

用例输入 2

1
10

用例输出 2

VUCI

用例输入 3

2
5
6

用例输出 3

VUCI

【样例解释】

第一个样例: 已经抓的 6 6 6 张牌的总点数是 15 15 15,它与 21 21 21 的差 X X X 6 6 6。桌面上剩余牌中比 6 6 6大的牌有 32 32 32 张(分别是 4 4 4 A A A 4 4 4 K K K 4 4 4 Q Q Q 4 4 4 J J J 4 4 4 10 10 10 4 4 4 9 9 9 4 4 4 8 8 8 4 4 4 7 7 7),而比 6 6 6 小的牌有 14 14 14 张(分别是 1 1 1 2 2 2 1 1 1 3 3 3 4 4 4 4 4 4 4 4 4 5 5 5 4 4 4 6 6 6),所以决定不再抓牌,输出 DOSTA

直接上代码

#include<bits/stdc++.h>

using namespace std;

int t[15] = {0, 0, 4, 4, 4, 4, 4, 4, 4, 4, 16, 4};

int main() {
	int n;
	cin >> n;
	int tmp = 21;
	for (int i = 1; i <= n; i++) {
		int x;
		cin >> x;
		tmp -= x;
		t[x]--;
	}
	int a = 0, b = 0;
	for (int i = 2; i <= 11; i++) {
		if (i > tmp) b += t[i];
		if (i <= tmp) a += t[i];
	}
	if (b > a || a == b) cout << "DOSTA" << endl;
	else cout << "VUCI" << endl;
	return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值