题目描述
Alice和Bob在玩骰子游戏,他们用三颗六面的骰子,游戏规则如下:
- 点数的优先级是1点最大,其次是6,5,4,3,2。
- 三个骰子点数相同,称为"豹子",豹子之间按点数优先级比较大小。
- 如果只有两个骰子点数相同,称为"对子",对子之间按点数优先级比较大小。
- 其他情况称为"点子",点子按点数和比较大小。
- 豹子比对子、点子大,对子比点子大,如果对子的点数优先级相同,就看剩余那个骰子的点数优先级。
现在给你Alice和Bob投掷骰子的情况,判断一下胜负情况。
输入
第一行输入一个整数K,表示游戏的次数。 以后每两行表示一个样例,第一行是Alice骰子的点数。第二行是Bob骰子的点数。
输出
如果是Alice赢,输出"Alice",如果是Bob赢,输出"Bob",否则输出"Draw"。
样例输入
3 1 1 1 6 6 6 2 1 2 4 5 4 4 5 6 6 5 4
样例输出
Alice Bob Draw
#include<stdio.h>
int Solve(int a,int b,int c){
if(a==b&&b==c)return 2;
else if(a!=b&&b!=c&&a!=c)return 0;
else return 1;
}
void Sol(int m,int n){
if(m>n)printf("Alice\n");
else if(m<n)printf("Bob\n");
else printf("Draw\n");
}
int Same(int a,int b,int c){
if(a==b&&a!=c)return a;
else if(b==c&&a!=b)return b;
else return c;
}
int Dif(int a,int b,int c){
if(a==b&&a!=c)return c;
else if(b==c&&a!=b)return a;
else return b;
}
int main(){
int T;
scanf("%d",&T);
while(T--){
int a1,b1,c1;
scanf("%d%d%d",&a1,&b1,&c1);
int a2,b2,c2;
scanf("%d%d%d",&a2,&b2,&c2);
int m=Solve(a1,b1,c1);
int n=Solve(a2,b2,c2);
if(m!=n)Sol(m,n);
else{
if(m==2){
if(a1==1)a1=7;
if(a2==1)a2=7;
Sol(a1,a2);
}
else if(m==0){
int sum1=a1+b1+c1;
int sum2=a2+b2+c2;
Sol(sum1,sum2);
}
else{
int s1=Same(a1,b1,c1);
int s2=Same(a2,b2,c2);
if(s1==1)s1=7;
if(s2==1)s2=7;
if(s1>s2)printf("Alice\n");
else if(s1<s2)printf("Bob\n");
else{
int k1=Dif(a1,b1,c1);
int k2=Dif(a2,b2,c2);
if(k1==1)k1=7;
if(k2==1)k2=7;
Sol(k1,k2);
}
}
}
}
}