//未通过,重点掌握:istringstream的用法。
//整形和getline()或者(fgets())结合使用时要用getchar()来做区别
/*#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include <stdlib.h>
#define MAX 105
int main()
{
struct {
char Concept;
char Prefix;
double data;
}s[2];
int n;
scanf("%d",&n);
getchar();
for(int cas=1;cas<=n;cas++)
{
char buf[MAX];
char str[20];
int slen=0;
fgets(buf,sizeof(buf),stdin);
int len=strlen(buf);
int flag=0;
int j=0;
for(int i=0;i<len;i++)
{
if((buf[i]=='I'||buf[i]=='U'||buf[i]=='P') && buf[i+1]=='=')
{
s[j].Concept=buf[i];
flag=1;
i++;
continue;
}
if((!isdigit(buf[i])&&buf[i]!='.') && flag==1)
{
flag=0;
str[slen]='\0';
s[j].data=atof(str);
s[j].Prefix=buf[i];
slen=0;
j++;
continue;
}
if(flag==1)
{
str[slen++]=buf[i];
}
}
for(int k=0;k<2;k++)
{
switch(s[k].Prefix)
{
case 'm':
s[k].data*=1e-3;
break;
case 'k':
s[k].data*=1e3;
break;
case 'M':
s[k].data*=1e6;
break;
default:
break;
}
}
printf("Problem #%d\n",cas);
if((s[0].Concept=='U' && s[1].Concept=='I') || (s[0].Concept=='I' && s[1].Concept=='U'))
{
printf("P=%.2lfW\n",s[0].data*s[1].data);
}
else if(s[0].Concept=='P' && s[1].Concept=='U')
{
printf("I=%.2lfA\n",s[0].data/s[1].data);
}
else if(s[0].Concept=='P' && s[1].Concept=='I')
{
printf("U=%.2lfV\n",s[0].data/s[1].data);
}
else if(s[1].Concept=='P' && s[0].Concept=='U')
{
printf("I=%.2lfA\n",s[1].data/s[0].data);
}
else if(s[1].Concept=='P' && s[0].Concept=='I')
{
printf("U=%.2lfV\n",s[1].data/s[0].data);
}
printf("\n");
}
return 0;
}*/
//c++ 心如止水
#include<iostream>
#include<sstream>
#include<string>
#include<cstdio>
using namespace std;
int main()
{
int n;
cin>>n;
getchar();
for(int cas=1;cas<=n;cas++)
{
string line;
getline(cin,line);
istringstream sin(line);
double P(-1.0),U(-1.0),I(-1.0);
char ch;
while(sin>>ch)
{
char t;
if(ch=='P')
{
sin>>t;
if(t!='=')
continue;
sin>>P;
sin>>t;
if(t=='m')
P*=1e-3;
else if(t=='k')
P*=1e3;
else if(t=='M')
P*=1e6;
}
else if(ch=='U')
{
sin>>t;
if(t!='=')
continue;
sin>>U;
sin>>t;
if(t=='m')
U*=1e-3;
else if(t=='k')
U*=1e3;
else if(t=='M')
U*=1e6;
}
else if(ch=='I')
{
sin>>t;
if(t!='=')
continue;
sin>>I;
sin>>t;
if(t=='m')
I*=1e-3;
else if(t=='k')
I*=1e3;
else if(t=='M')
I*=1e6;
}
}
printf("Problem #%d\n",cas);
if(P==-1.0)
printf("P=%.2lfW\n",U*I);
else if(U==-1.0)
printf("U=%.2lfV\n",P/I);
else if(I==-1.0)
printf("I=%.2lfA\n",P/U);
printf("\n");
}
return 0;
}