hzf 最近迷上 QQ 游戏欢乐斗牛。
斗牛的规则如下,游戏开始的时候,每位玩家发 5 5 5 张扑克牌,每张牌都是 A-K 中的一张牌( 1 1 1 表示 A, 2 − 10 2-10 2−10 表示对应的牌, 11 11 11-J, 12 12 12-Q, 13 13 13-K)。
每张牌都有一个点数, 1 − 10 1-10 1−10 分别对应其点数, 11 − 13 11-13 11−13 对应点数 10 10 10。
牌型分为以下 5 5 5 种情况,牌型的优先级按照给定从上到下。
-
四炸—— 5 5 5 张牌中有 4 4 4 张牌相同 ,优先级最高。
-
五小牛——即五张牌点数都小于 5 5 5,且 5 5 5 张牌的点总数和小于或等于 10 10 10,优先级次之。
-
牛牛——其中 3 3 3 张牌的点数和是 10 10 10 的整数倍,另外 2 2 2 张牌的点数和是 10 10 10 的整数倍。
-
牛 x ( x = 1 , 2 , 3 … 9 ) x(x=1,2,3\ldots 9) x(x=1,2,3…9)——其中 3 3 3 张牌的点数和是 10 10 10 的整数倍,另外 2 2 2 张牌的点数和对 10 10 10 取模为 x x x。
-
以上情况都不是,就是无牛。
hzf 要根据自己的牌型来决定自己的下注的倍数,但是 hzf 总是不能看出他的牌型,你能写一个程序帮助他吗。
输入格式
一行输入 5 5 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
列举每种情况,根据条件判断输出
#include<cstdio>
#include<iostream>
using namespace std;
int main()
{
int a[10];
for(int i=0;i<=4;i++)
{
int l;
cin>>l;
if(l>=11)//如果 是J Q K
l=10;//对应点数为10
a[i]=l;
}
for(int i=0;i<=4;i++)
{
int cnt=0;//判断相等的次数
for(int m=0;m<=4;m++)
{
if(a[i]==a[m])//如果相等
cnt++;//数目增加
if(cnt==4)//如果相等的数目是4
{
cout<<"quadra bomb orz";//输出
return 0;
}
}
}
int ca=1;//判断
int sum=0;
for(int m=0;m<=4;m++)
{
if(a[m]>=5)//如果有点数>=5
{
ca=0;//判断情况
}
sum+=a[m];//累加和
}
if((sum<=10)&&(ca==1))//判断和<=10,且每个点数都<=5,即ca=1;
{
cout<<"penta calf";
return 0;
}
//注意此种情况是 三个点之和与两个点数之和各是10 的整数倍,只需判断全部和与其中一种情况
if((sum%10)==0)//5个点数和是10的整数倍
{
for(int m=0;m<=4;m++)
{
for(int n=0;n<=4;n++)
{
if(m==n)
continue;
if(((a[m]+a[n])%10)==0)//其中两个点数和是10 的整数倍,
{
cout<<"you can you up";
return 0;
}
}
} }
for(int m=0;m<=4;m++)
{
for(int n=0;n<=4;n++)
{
if(m==n)
continue;
if(((sum-a[n]-a[m])%10)==0)//其中三个点之和是10 的整数倍
{
cout<<"too young too simple:calf"<<" "<<(a[m]+a[n])%10 ;//(a[m]+a[n])mod10=x,输出
return 0;
}
}
}
cout<<"gg";
return 0;
}