2129 - 十点半
这里的十点半可不是指的是时间,是一种扑克牌的游戏。为了简化题目难度,这里的游戏规则为:一副扑克牌除去大小王,每人发两张扑克牌,两张牌的点数加起来为这个人的点数。其中,10点半>10点>9点半>....>1点>0点半>0点(0点指的是大于十点半的点数,例如给出的两张牌是5和9,加起来点数是14点,大于10点半,按0点算)。
点牌:A、2、3、4、5、6、7、9、10,其中A为1点其他牌为本身的点数(输入时,用1代表A)。
人牌:J、Q、K被称为“人牌”,都算做半点(输入时,用11,12,13代表J、Q、K)。
现在A 和 B两个人正在玩十点半游戏,想找个人来帮他们判断谁谁输谁赢,如果点数相同则为平局。聪明的你赶紧帮帮他们吧。
题目输入
有多组输入数据,每组数据有四个整数d1,d2,d3,d4(1<=d1,d2,d3,d4<=13),d1,d2代表A的牌,d3,d4代表B的牌。
题目输出
如果A的点数大于B的点数,则输出1,如果点数相同,则输出0,否则输出-1。每组输出占一行。
输入/输出样例
题目输入
1 11 2 13 2 9 4 9
题目输出
-1 0
C语言解答
#include<stdio.h> #include<stdlib.h> #include<time.h> void testData() { int i, j, d; for( i = 0; i < 1000; ++i ) { for( j = 0; j < 3; ++j ) { d = rand() % 13 + 1; printf("%d ", d); } printf("%d\n", rand() % 13 + 1); } } int main() { //freopen("test.in", "r", stdin); //freopen("test.out", "w", stdout); //srand((unsigned)time(0)); //testData(); int d1, d2, d3, d4; while( scanf("%d%d%d%d", &d1, &d2, &d3, &d4) != EOF ) { double a = 0, b = 0; a += d1 > 10 ? 0.5 : d1; a += d2 > 10 ? 0.5 : d2; a = a > 10.5 ? 0 : a; b += d3 > 10 ? 0.5 : d3; b += d4 > 10 ? 0.5 : d4; b = b > 10.5 ? 0 : b; if( a > b ) puts("1"); else if( a == b ) puts("0"); else puts("-1"); } return 0; }
C++解答
#include"stdio.h" #include"iostream" using namespace std; int main() { //freopen("2.txt","r",stdin); //freopen("3.txt","w",stdout); double d1,d2,d3,d4; while(cin>>d1>>d2>>d3>>d4) { double a,b; d1 = d1 > 10.5 ? 0.5:d1; d2 = d2 > 10.5 ? 0.5:d2; d3 = d3 > 10.5 ? 0.5:d3; d4 = d4 > 10.5 ? 0.5:d4; a= (d1 + d2) > 10.5 ? 0.5:(d1 + d2); b = (d3 + d4) > 10.5 ? 0.5:(d3 + d4); //cout<<d1<<" "<<d2<<" "<<d3<<" "<<d4<<" "<<a<<" " <<b<<endl; if(a > b) cout<<1 <<endl; else if(a < b) cout<<-1 <<endl; else cout<<0<<endl; } return 0; } /*#include"stdio.h" int main() { //freopen("test.in","r",stdin); //freopen("test.out","w",stdout); int n; while(scanf("%d",&n) != EOF) { int i,j; for(i = 0; i < n; i++) { for(j = 0; j < n; j++) { if(i == 0 || i == (n-1)) printf("*"); else { if(j == 0 || j == (n-1)) printf("*"); else printf(" "); } } printf("\n"); } } return 0; }*/