警示后人(如果你70pts/75pts)
查看原帖
警示后人(如果你70pts/75pts)
1033726
Side_sdtkwxt楼主2023/8/11 14:38

70pts & WA on #5#9#10#12#15#20

对0进行特判,如果待翻转的数为0,则直接输出0,不要像其他数一样去除首尾多余0

75pts & RE on #1#2#3#4#19

由于输入长度超过long long 范围,所以不要通过转成数字来去掉多余0

如以下代码:

#include<bits/stdc++.h>
using namespace std;
string rev(string s){
	//s=to_string(stoi(s));   《《《不要这样写,否则75pts
	//reverse(s.begin(),s.end());
	//return to_string(stoi(s));
	
	if(s=="0")return "0";  //特判,否则70pts
	
	reverse(s.begin(),s.end());
	while(s[0]=='0')s=s.substr(1);
	while(s.back()=='0')s=s.substr(0,s.size()-1);
	return s;
}int main(){
	string n;cin>>n;
	if(n.find(".")!=-1)cout<<rev(n.substr(0,n.find(".")))<<"."<<rev(n.substr(n.find(".")+1));
	else if(n.find("/")!=-1)cout<<rev(n.substr(0,n.find("/")))<<"/"<<rev(n.substr(n.find("/")+1));
	else if(n.back()=='%')cout<<rev(n.substr(0,n.size()-1))<<'%';
	else cout<<rev(n);
}
2023/8/11 14:38
加载中...