题目
hzf 最近迷上 QQ 游戏欢乐斗牛。
斗牛的规则如下,游戏开始的时候,每位玩家发 <math> <semantics> <mrow> <mn> 5 </mn> </mrow> <annotation encoding="application/x-tex"> 5 </annotation> </semantics> </math>5 张扑克牌,每张牌都是 A-K 中的一张牌( <math> <semantics> <mrow> <mn> 1 </mn> </mrow> <annotation encoding="application/x-tex"> 1 </annotation> </semantics> </math>1 表示 A, <math> <semantics> <mrow> <mn> 2 </mn> <mo> − </mo> <mn> 10 </mn> </mrow> <annotation encoding="application/x-tex"> 2-10 </annotation> </semantics> </math>2−10 表示对应的牌, <math> <semantics> <mrow> <mn> 11 </mn> </mrow> <annotation encoding="application/x-tex"> 11 </annotation> </semantics> </math>11-J, <math> <semantics> <mrow> <mn> 12 </mn> </mrow> <annotation encoding="application/x-tex"> 12 </annotation> </semantics> </math>12-Q, <math> <semantics> <mrow> <mn> 13 </mn> </mrow> <annotation encoding="application/x-tex"> 13 </annotation> </semantics> </math>13-K)。
每张牌都有一个点数, <math> <semantics> <mrow> <mn> 1 </mn> <mo> − </mo> <mn> 10 </mn> </mrow> <annotation encoding="application/x-tex"> 1-10 </annotation> </semantics> </math>1−10 分别对应其点数, <math> <semantics> <mrow> <mn> 11 </mn> <mo> − </mo> <mn> 13 </mn> </mrow> <annotation encoding="application/x-tex"> 11-13 </annotation> </semantics> </math>11−13 对应点数 <math> <semantics> <mrow> <mn> 10 </mn> </mrow> <annotation encoding="application/x-tex"> 10 </annotation> </semantics> </math>10。
牌型分为以下 <math> <semantics> <mrow> <mn> 5 </mn> </mrow> <annotation encoding="application/x-tex"> 5 </annotation> </semantics> </math>5 种情况,牌型的优先级按照给定从上到下。
-
四炸—— <math> <semantics> <mrow> <mn> 5 </mn> </mrow> <annotation encoding="application/x-tex"> 5 </annotation> </semantics> </math>5 张牌中有 <math> <semantics> <mrow> <mn> 4 </mn> </mrow> <annotation encoding="application/x-tex"> 4 </annotation> </semantics> </math>4 张牌相同 ,优先级最高。
-
五小牛——即五张牌点数都小于 <math> <semantics> <mrow> <mn> 5 </mn> </mrow> <annotation encoding="application/x-tex"> 5 </annotation> </semantics> </math>5,且 <math> <semantics> <mrow> <mn> 5 </mn> </mrow> <annotation encoding="application/x-tex"> 5 </annotation> </semantics> </math>5 张牌的点总数和小于或等于 <math> <semantics> <mrow> <mn> 10 </mn> </mrow> <annotation encoding="application/x-tex"> 10 </annotation> </semantics> </math>10,优先级次之。
-
牛牛——其中 <math> <semantics> <mrow> <mn> 3 </mn> </mrow> <annotation encoding="application/x-tex"> 3 </annotation> </semantics> </math>3 张牌的点数和是 <math> <semantics> <mrow> <mn> 10 </mn> </mrow> <annotation encoding="application/x-tex"> 10 </annotation> </semantics> </math>10 的整数倍,另外 <math> <semantics> <mrow> <mn> 2 </mn> </mrow> <annotation encoding="application/x-tex"> 2 </annotation> </semantics> </math>2 张牌的点数和是 <math> <semantics> <mrow> <mn> 10 </mn> </mrow> <annotation encoding="application/x-tex"> 10 </annotation> </semantics> </math>10 的整数倍。
-
牛 <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/x-tex"> x(x=1,2,3\ldots 9) </annotation> </semantics> </math>x(x=1,2,3…9)——其中 <math> <semantics> <mrow> <mn> 3 </mn> </mrow> <annotation encoding="application/x-tex"> 3 </annotation> </semantics> </math>3 张牌的点数和是 <math> <semantics> <mrow> <mn> 10 </mn> </mrow> <annotation encoding="application/x-tex"> 10 </annotation> </semantics> </math>10 的整数倍,另外 <math> <semantics> <mrow> <mn> 2 </mn> </mrow> <annotation encoding="application/x-tex"> 2 </annotation> </semantics> </math>2 张牌的点数和对 <math> <semantics> <mrow> <mn> 10 </mn> </mrow> <annotation encoding="application/x-tex"> 10 </annotation> </semantics> </math>10 取模为 <math> <semantics> <mrow> <mi> x </mi> </mrow> <annotation encoding="application/x-tex"> x </annotation> </semantics> </math>x。
-
以上情况都不是,就是无牛。
hzf 要根据自己的牌型来决定自己的下注的倍数,但是 hzf 总是不能看出他的牌型,你能写一个程序帮助他吗。
输入格式
一行输入 <math> <semantics> <mrow> <mn> 5 </mn> </mrow> <annotation encoding="application/x-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
题解
先确定点数
再给点数排序
再四种情况一一实现:
- 四炸:由于已经排序,如果 a[0] = a[3],那中间 a[1] a[2] 肯定都相等,a[1] = a[4] 同理
- 五小牛:默认升序排列,如果 a[4] < 5,a[0]~a[3] 肯定也小于 5
- 牛牛:因为三张牌点数是 10 的整数倍,另外两张牌点数也是 10 的整数倍,所以和取余为 0,但是做除肯定不为 1
- 牛x:当三张牌点数是 10 的整数倍,剩余的两张牌的余数就是要输出的数
- 无牛:当上面情况全部都没有时
#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;
}