竞赛要求中可以通过的题解
查看原帖
竞赛要求中可以通过的题解
1066617
_ACGODs_楼主2024/6/6 20:16

虽然你谷官方不让我们发题解了,不过...
竞赛要求中,常常会出现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;
}
2024/6/6 20:16
加载中...