虽然你谷官方不让我们发题解了,不过...
竞赛要求中,常常会出现Space、Tab的出现。
例: 114514 km = ? mm
所以我们要记住所有的空白字符并照样输出,所以: Talk is cheap,show you the code!
#include<bits/stdc++.h>
using namespace std;
string s;
int tran(string a1,string a2){//转换
int oier=1;
if((a1=="km" && a2=="m") || (a1=="m" && a2=="mm")) oier=1000;
if(a1=="km" && a2=="mm") oier=1000000;
if((a1=="kg" && a2=="g") || (a1=="g" && a2=="mg")) oier=1000;
if(a1=="kg" && a2=="mg") oier=1000000;
return oier;
}
int main(){
int n;
cin>>n;
getline(cin,s);//读入回车
while(n--){
getline(cin,s);//读入询问字符串,因为有空格,所以用getline
long long i1=0,o=0;//单位前的数字、第几个字符
string d1="",d2="",d3="",d4="",d5="",d6="",d7="",d8="";//要记住的那些字符串
while(!(s[o]>='0' && s[o]<='9')) d1+=s[o],o++;//最前面的空白符
while(s[o]>='0' && s[o]<='9') i1=i1*10+(s[o]-'0'),o++;//数字
while(!(s[o]>='a' && s[o]<='z')) d2+=s[o],o++;
while(s[o]>='a' && s[o]<='z') d3+=s[o],o++;//单位
while(s[o]!='=') d4+=s[o],o++;//不等于等号,空白符
while(s[o]!='?') d5+=s[o],o++;//空白符,会把=读进去,但并无大碍
o++;//把?读进去了就有大碍了
while(!(s[o]>='a' && s[o]<='z')) d6+=s[o],o++;//空白
while(s[o]>='a' && s[o]<='z') d7+=s[o],o++;//第二个单位
while(o<s.length()) d8+=s[o],o++;//最后空白
cout<<d1<<i1<<d2<<d3<<d4<<d5<<i1*tran(d3,d7)<<d6<<d7<<d8<<endl;//输出
}
return 0;
}