题目描述
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);}}}}
}