题目

hzf 最近迷上 QQ 游戏欢乐斗牛。

斗牛的规则如下,游戏开始的时候,每位玩家发 <math> <semantics> <mrow> <mn> 5 </mn> </mrow> <annotation encoding="application&#47;x&#45;tex"> 5 </annotation> </semantics> </math>5 张扑克牌,每张牌都是 A-K 中的一张牌( <math> <semantics> <mrow> <mn> 1 </mn> </mrow> <annotation encoding="application&#47;x&#45;tex"> 1 </annotation> </semantics> </math>1 表示 A, <math> <semantics> <mrow> <mn> 2 </mn> <mo> − </mo> <mn> 10 </mn> </mrow> <annotation encoding="application&#47;x&#45;tex"> 2-10 </annotation> </semantics> </math>210 表示对应的牌, <math> <semantics> <mrow> <mn> 11 </mn> </mrow> <annotation encoding="application&#47;x&#45;tex"> 11 </annotation> </semantics> </math>11-J, <math> <semantics> <mrow> <mn> 12 </mn> </mrow> <annotation encoding="application&#47;x&#45;tex"> 12 </annotation> </semantics> </math>12-Q, <math> <semantics> <mrow> <mn> 13 </mn> </mrow> <annotation encoding="application&#47;x&#45;tex"> 13 </annotation> </semantics> </math>13-K)。

每张牌都有一个点数, <math> <semantics> <mrow> <mn> 1 </mn> <mo> − </mo> <mn> 10 </mn> </mrow> <annotation encoding="application&#47;x&#45;tex"> 1-10 </annotation> </semantics> </math>110 分别对应其点数, <math> <semantics> <mrow> <mn> 11 </mn> <mo> − </mo> <mn> 13 </mn> </mrow> <annotation encoding="application&#47;x&#45;tex"> 11-13 </annotation> </semantics> </math>1113 对应点数 <math> <semantics> <mrow> <mn> 10 </mn> </mrow> <annotation encoding="application&#47;x&#45;tex"> 10 </annotation> </semantics> </math>10

牌型分为以下 <math> <semantics> <mrow> <mn> 5 </mn> </mrow> <annotation encoding="application&#47;x&#45;tex"> 5 </annotation> </semantics> </math>5 种情况,牌型的优先级按照给定从上到下。

  1. 四炸—— <math> <semantics> <mrow> <mn> 5 </mn> </mrow> <annotation encoding="application&#47;x&#45;tex"> 5 </annotation> </semantics> </math>5 张牌中有 <math> <semantics> <mrow> <mn> 4 </mn> </mrow> <annotation encoding="application&#47;x&#45;tex"> 4 </annotation> </semantics> </math>4 张牌相同 ,优先级最高。

  2. 五小牛——即五张牌点数都小于 <math> <semantics> <mrow> <mn> 5 </mn> </mrow> <annotation encoding="application&#47;x&#45;tex"> 5 </annotation> </semantics> </math>5,且 <math> <semantics> <mrow> <mn> 5 </mn> </mrow> <annotation encoding="application&#47;x&#45;tex"> 5 </annotation> </semantics> </math>5 张牌的点总数和小于或等于 <math> <semantics> <mrow> <mn> 10 </mn> </mrow> <annotation encoding="application&#47;x&#45;tex"> 10 </annotation> </semantics> </math>10,优先级次之。

  3. 牛牛——其中 <math> <semantics> <mrow> <mn> 3 </mn> </mrow> <annotation encoding="application&#47;x&#45;tex"> 3 </annotation> </semantics> </math>3 张牌的点数和是 <math> <semantics> <mrow> <mn> 10 </mn> </mrow> <annotation encoding="application&#47;x&#45;tex"> 10 </annotation> </semantics> </math>10 的整数倍,另外 <math> <semantics> <mrow> <mn> 2 </mn> </mrow> <annotation encoding="application&#47;x&#45;tex"> 2 </annotation> </semantics> </math>2 张牌的点数和是 <math> <semantics> <mrow> <mn> 10 </mn> </mrow> <annotation encoding="application&#47;x&#45;tex"> 10 </annotation> </semantics> </math>10 的整数倍。

  4. <math> <semantics> <mrow> <mi> x </mi> <mo> ( </mo> <mi> x </mi> <mo> = </mo> <mn> 1 </mn> <mo separator="true"> , </mo> <mn> 2 </mn> <mo separator="true"> , </mo> <mn> 3 </mn> <mo> … </mo> <mn> 9 </mn> <mo> ) </mo> </mrow> <annotation encoding="application&#47;x&#45;tex"> x(x=1,2,3\ldots 9) </annotation> </semantics> </math>x(x=1,2,39)——其中 <math> <semantics> <mrow> <mn> 3 </mn> </mrow> <annotation encoding="application&#47;x&#45;tex"> 3 </annotation> </semantics> </math>3 张牌的点数和是 <math> <semantics> <mrow> <mn> 10 </mn> </mrow> <annotation encoding="application&#47;x&#45;tex"> 10 </annotation> </semantics> </math>10 的整数倍,另外 <math> <semantics> <mrow> <mn> 2 </mn> </mrow> <annotation encoding="application&#47;x&#45;tex"> 2 </annotation> </semantics> </math>2 张牌的点数和对 <math> <semantics> <mrow> <mn> 10 </mn> </mrow> <annotation encoding="application&#47;x&#45;tex"> 10 </annotation> </semantics> </math>10 取模为 <math> <semantics> <mrow> <mi> x </mi> </mrow> <annotation encoding="application&#47;x&#45;tex"> x </annotation> </semantics> </math>x

  5. 以上情况都不是,就是无牛。

hzf 要根据自己的牌型来决定自己的下注的倍数,但是 hzf 总是不能看出他的牌型,你能写一个程序帮助他吗。

输入格式

一行输入 <math> <semantics> <mrow> <mn> 5 </mn> </mrow> <annotation encoding="application&#47;x&#45;tex"> 5 </annotation> </semantics> </math>5 个空格隔开的整数。

输出格式

若牌型为四炸,输出一行quadra bomb orz

若为五小牛,输出一行penta calf

若为牛牛,输出一行you can you up

若为牛 x,输出一行too young too simple:calf x

若为无牛,输出一行gg

样例输入

10 10 10 1 1

样例输出

too young too simple:calf 2

样例输入

10 10 10 10 9

样例输出

quadra bomb orz

题解

先确定点数
再给点数排序
再四种情况一一实现:

  1. 四炸:由于已经排序,如果 a[0] = a[3],那中间 a[1] a[2] 肯定都相等,a[1] = a[4] 同理
  2. 五小牛:默认升序排列,如果 a[4] < 5,a[0]~a[3] 肯定也小于 5
  3. 牛牛:因为三张牌点数是 10 的整数倍,另外两张牌点数也是 10 的整数倍,所以和取余为 0,但是做除肯定不为 1
  4. 牛x:当三张牌点数是 10 的整数倍,剩余的两张牌的余数就是要输出的数
  5. 无牛:当上面情况全部都没有时
#include<iostream>
#include<algorithm>
using namespace std;
int a[5];
// 判断四炸
bool bomb(){
	if(a[0] == a[3] || a[1] == a[4]){
		cout<<"quadra bomb orz";
		return true;
	}
	return false;
}
// 判断五小牛 
bool penta(){
	if(a[4] < 5 && a[0]+a[1]+a[2]+a[3]+a[4]<=10){
		cout<<"penta calf";
		return true;
	}
	return false;
}
// 判断牛牛
bool niuniu(){
	if((a[0]+a[1]+a[2]+a[3]+a[4])%10==0 && (a[0]+a[1]+a[2]+a[3]+a[4])/10!=1){
		cout<<"you can you up";
		return true;
	}
	return false;
} 
// 判断牛x
bool niux(){
	for(int i=0;i<5;i++)
		for(int j=i+1;j<5;j++)
			for(int k=j+1;k<5;k++){
				if((a[i]+a[j]+a[k])%10 == 0){
					int sum = 0;
					for(int w=0;w<5;w++)
						if(w!=i && w!=j && w!=k)
							sum += a[w];
					cout<<"too young too simple:calf "<<sum%10;
					return true;
				}
			} 
	return false; 
} 
int main(){
	for(int i=0;i<5;i++){ 
		cin>>a[i];
		if(a[i] > 10)
			a[i] = 10; 
	}
	sort(a,a+5);
	if(!bomb() && !penta() && !niuniu() && !niux()){
		cout<<"gg";
	} 
	return 0;
}

返回目录,查看更多