2256 Artificial Intelligence?
問題概要
テキストが入力として与えられる。
テキスト中に含まれる変数=(数字)(接頭辞)(単位)から、
残りの変数を求めよ。
変数はP(単位W),I(単位A),U(単位V)のいずれか、
接頭辞はm(1/1000),k(1000),M(1000000)のいずれかである。
解法
getlineなどで入力を取って変数の値を調べる。
ソースコード
string in; int main(){ int T; cin>>T; cin.ignore(); rep(S,T){ getline(cin,in); stringstream ss(in); double P=-1,U=-1,I=-1; while(ss>>in){ int p,q; double d; if((p=in.find('='))==string::npos)continue; for(q=p;q<in.size();q++)if(isalpha(in[q]))break; sscanf(in.substr(p+1,q-p-1).c_str(),"%lf",&d); if(in[q]=='m')d/=1000; else if(in[q]=='k')d*=1000; else if(in[q]=='M')d*=1000000; if(in[0]=='P')P=d; else if(in[0]=='I')I=d; else if(in[0]=='U')U=d; else assert(0); } printf("Problem #%d\n",S+1); if(P<0)printf("P=%.2fW\n",U*I); else if(I<0)printf("I=%.2fA\n",P/U); else if(U<0)printf("U=%.2fV\n",P/I); puts(""); } return 0; }