您的位置:首页 > 其它

UVA - 537 Artificial Intelligence?

2016-07-05 23:50 302 查看
题目大意:给出 P,U,I 中任意两个量,根据 P = U * I 求剩下的。

解题思路:读取字符判断是否出现 P,U,I 且下一位为 =,用 %lf 直接读入数字,重复两次后计算即可。一开始自己全部读入题目再判断是否是数字,将字符化为数字,较繁琐而且一直 WA

#include<iostream>
#include<cstdio>
#include<string.h>
using namespace std;
char str[1000005];
int count = 0;
int main() {
int T;
scanf("%d", &T);
getchar();
while (T--) {
char c;
double P = 0, U = 0, I = 0;
int t = 2;
while (t--) {
while ((c = getchar()) != '\n'){
if (c == 'I') {
if ((c = 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 == 'P') {
if ((c = 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 == 'U') {
if ((c = 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);
printf("Problem #%d\n", ++count);
if (P == 0) printf("P=%.2lfW\n\n", U * I);
if (I == 0) printf("I=%.2lfA\n\n", P / U);
if (U == 0) printf("U=%.2lfV\n\n", P / I);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  uva