2016-07-14
UVA - 537 Artificial Intelligence?
题目大意:给出 P,U,I 中任意两个量,根据 P = U * I 求剩下的。
解题思路:读取字符判断是否出现 P,U,I 且下一位为 =,用 %lf 直接读入数字,重复两次后计算即可。
#include <iostream>
#include <cstdio>
using namespace std;
char str[100000];
int main () {
int n;
cin >> n;
for (int i = 1; i <= n; i++) {
char c;
double P = 0, U = 0, I = 0;
int m = 2;
while ( m-- ) {
while ( c = getchar() ) {
if ( c == 'P' ) {
if ( getchar() == '=' ) {
scanf("%lf", &P);
c = getchar();
if ( c == 'm' ) P *= 0.001;
if ( c == 'k' ) P *= 1000;
if ( c == 'M' ) P *= 1000000;
break;
}
}
if ( c == 'I' ) {
if ( getchar() == '=' ) {
scanf("%lf", &I);
c = getchar();
if ( c == 'm' ) I *= 0.001;
if ( c == 'k' ) I *= 1000;
if ( c == 'M' ) I *= 1000000;
break;
}
}
if ( c == 'U' ) {
if ( getchar() == '=' ) {
scanf("%lf", &U);
c = getchar();
if ( c == 'm' ) U *= 0.001;
if ( c == 'k' ) U *= 1000;
if ( c == 'M' ) U *= 1000000;
break;
}
}
}
}
gets(str);
cout << "Problem #" << i <<endl;
if ( P == 0 ) printf("P=%.2lfW\n\n",U*I);
if ( U == 0 ) printf("U=%.2lfV\n\n",P/I);
if ( I == 0 ) printf("I=%.2lfA\n\n",P/U);
}
return 0;
}