Отримання знань

дистанційна підтримка освіти школярів


Поддельный доллар
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;
}

 

Попередня Зміст Наступна
В системі: гості - (); користувачі - (0)