http://acm.pku.edu.cn/JudgeOnline/problem?id=1013
Код:
#include <stdio.h> #include <string.h> #define MAXN 5 #define MAXL 20 char arg[2][10] = {"light","heavy"}; char equ[MAXN][2][MAXL]; char bal[MAXN][MAXL]; int val[MAXL]; int ball; int weight; int task; void solve() { int i,j,k,flag; int left,right; char ch; for (ch = 'A'; ch <= 'L'; ch++) for (k = 0; k < 2; k++) { for (i = 0; i < 12 ; i++) if (ch - 'A' != i) val[i] = 0; if (k) val[ch - 'A'] = 1; else val[ch - 'A'] = -1; flag = 1; for (i = 0; i < 3; i++) { left = 0; right = 0; for (j = 0; j < strlen(equ[i][0]); j++) { left += val[equ[i][0][j]-'A']; right += val[equ[i][1][j]-'A']; } if (left >= right && (strcmp(bal[i],"down") == 0)) { flag = 0; break; } if (left <= right && (strcmp(bal[i],"up") == 0)) { flag = 0; break; } if (left != right && (strcmp(bal[i],"even") == 0)) { flag = 0; break; } } if (flag) { ball = ch; weight = k; return; } } } int main() { int i; scanf("%d",&task); while (task--) { for (i = 0; i < 3; i++) scanf("%s%s%s",equ[i][0],equ[i][1],bal[i]); solve(); printf("%c is the counterfeit coin and it is %s.\n",ball,arg[weight]); } return 0; }