#include<stdio.h>
#include<string.h>
#include<ctype.h>
char qs[300];
int main()
{
int n = -1;
scanf("%d\n", &n);
for (int i = 0; i < n; ++i)
{
memset(qs, '\0', sizeof(qs));
double uVal = 0.0;
double iVal = 0.0;
double pVal = 0.0;
bool haveU = false;
bool haveI = false;
bool haveP = false;
gets(qs);
char *p = qs;
int varNum = 2;
while ((p = strchr(p, '=') + 1) != NULL && varNum--)
{
bool isU = false;
bool isI = false;
bool isP = false;
switch (*(p - 2))
{
case 'U':
isU = true;
haveU = true;
break;
case 'I':
isI = true;
haveI = true;
break;
case 'P':
isP = true;
haveP = true;
break;
default:
printf("error1\n");
}
bool isMantissa = false;
double mantissaLen = 10.0;
while (*p != NULL && *p != 'A' && *p != 'W' && *p != 'V')
{
if (isdigit(*p) && !isMantissa)
{
if (isU)
uVal = *p - '0' + uVal * 10;
else if (isI)
iVal = *p - '0' + iVal * 10;
else
pVal = *p - '0' + pVal * 10;
}
else if (isdigit(*p) && isMantissa)
{
if (isU)
uVal = (*p - '0') / mantissaLen + uVal;
else if (isI)
iVal = (*p - '0') / mantissaLen + iVal;
else
pVal = (*p - '0') / mantissaLen + pVal;
mantissaLen *= 10;
}
else if (*p == '.')
isMantissa = true;
else
{
switch (*p)
{
case 'k':
if (isU)
uVal *= 1000;
else if (isI)
iVal *= 1000;
else
pVal *= 1000;
break;
case 'm':
if (isU)
uVal /= 1000;
else if (isI)
iVal /= 1000;
else
pVal /= 1000;
break;
case 'M':
if (isU)
uVal *= 1000000;
else if (isI)
iVal *= 1000000;
else
pVal *= 1000000;
break;
}
break;
}
++p;
}
}
if (haveU && haveI)
{
printf("Problem #%d\nP=%.2lfW\n\n", i + 1, uVal * iVal);
}
else if (haveU && haveP)
{
printf("Problem #%d\nI=%.2lfA\n\n", i + 1, pVal / uVal);
}
else if (haveP && haveI)
{
printf("Problem #%d\nU=%.2lfV\n\n", i + 1, pVal / iVal);
}
else
{
printf("error2\n");
}
}
}
UVaOJ 537 - Artificial Intelligence?
最新推荐文章于 2016-02-05 16:30:59 发布