ACM天梯賽練習L1-019. 誰先倒
阿新 • • 發佈:2019-01-10
划拳是古老中國酒文化的一個有趣的組成部分。酒桌上兩人划拳的方法為:每人口中喊出一個數字,同時用手比劃出一個數字。如果誰比劃出的數字正好等於兩人喊出的數字之和,誰就輸了,輸家罰一杯酒。兩人同贏或兩人同輸則繼續下一輪,直到唯一的贏家出現。
下面給出甲、乙兩人的酒量(最多能喝多少杯不倒)和划拳記錄,請你判斷兩個人誰先倒。
輸入格式:
輸入第一行先後給出甲、乙兩人的酒量(不超過100的非負整數),以空格分隔。下一行給出一個正整數N(<=100),隨後N行,每行給出一輪划拳的記錄,格式為:
甲喊 甲劃 乙喊 乙劃
其中“喊”是喊出的數字,“劃”是劃出的數字,均為不超過100的正整數(兩隻手一起劃)。
輸出格式:
在第一行中輸出先倒下的那個人:A代表甲,B代表乙。第二行中輸出沒倒的那個人喝了多少杯。題目保證有一個人倒下。注意程式處理到有人倒下就終止,後面的資料不必處理。
輸入樣例:1 1 6 8 10 9 12 5 10 5 10 3 8 5 12 12 18 1 13 4 16 12 15 15 1 1 16輸出樣例:
A
1
解題思路:先讀取兩人的酒量,再逐條讀取划拳記錄,一邊讀取,一邊判斷(划拳輸贏以及是否有人先倒下),話不多說,上程式碼:
#include <stdio.h> #include <stdlib.h> /* run this program using the console pauser or add your own getch, system("pause") or input loop */ int main(int argc, char *argv[]) { int num,a,b,c,d,ma,mb,na,nb; scanf("%d%d%d",&na,&nb,&num); ma=na; mb=nb; while(num--){ scanf("%d%d%d%d",&a,&b,&c,&d); if(b==a+c&&d!=a+c){ ma--; }else if(b!=a+c&&d==a+c){ mb--; } if(ma==-1){ printf("A\n%d",nb-mb); break; }else if(mb==-1){ printf("B\n%d",na-ma); break; } } return 0; }