UVA-537 Artificial Intelligence?
题目大意:给定两个量根据UI=P算第三个量
解题思路:由题目意思,在等号的后面是数字,等号前面是IUP之一,所以三个变量,用两个,剩下的一个不用,读到等号,直接读数字,不用一个一个的把浮点数存下来在做。
#include<iostream>
#include<cstring>
#include<cstdio>
char str[10000];
int main() {
int cc;
int cases = 1;
scanf("%d", &cc);
getchar();
while (cc--)
{
double A, U, P;
A = U = P = 0;
char ch;
while ((ch = getchar())!='\n')
{
if (ch == 'I')
{
if ((ch = getchar()) == '=')
{
scanf("%lf", &A);
ch = getchar();
if (ch == 'm')A *= 0.001;
else if (ch == 'k')A *= 1000;
else if (ch == 'M')A *= 1000000; break;
}
}
else if (ch == 'U')
{
if ((ch = getchar()) == '=')
{
scanf("%lf", &U);
ch = getchar();
if (ch == 'm')U *= 0.001;
else if (ch == 'k')U *= 1000;
else if (ch == 'M')U *= 1000000;
break;
}
}
else if (ch == 'P')
{
if ((ch = getchar()) == '=')
{
scanf("%lf", &P);
ch = getchar();
if (ch == 'm')P *= 0.001;
else if (ch == 'k')P *= 1000;
else if (ch == 'M')P *= 1000000; break;
}
}
}
while ((ch = getchar()) != '\n')
{
if (ch == 'I')
{
if ((ch = getchar()) == '=')
{
scanf("%lf", &A);
ch = getchar();
if (ch == 'm')A *= 0.001;
else if (ch == 'k')A *= 1000;
else if (ch == 'M')A *= 1000000; break;
}
}
else if (ch == 'U')
{
if ((ch = getchar()) == '=')
{
scanf("%lf", &U);
ch = getchar();
if (ch == 'm')U *= 0.001;
else if (ch == 'k')U *= 1000;
else if (ch == 'M')U *= 1000000; break;
}
}
else if (ch == 'P')
{
if ((ch = getchar()) == '=')
{
scanf("%lf", &P);
ch = getchar();
if (ch == 'm')P *= 0.001;
else if (ch == 'k')P *= 1000;
else if (ch == 'M')P *= 1000000; break;
}
}
}
gets(str);
printf("Problem #%d\n",cases++);
if(!P)
printf("P=%.2lfW\n\n", A*U);
else if(!A)
printf("I=%.2lfA\n\n",P/U);
else if(!U)
printf("U=%.2lfV\n\n",P/A);
}
return 0;
}