1,3,19 WA的原因是没有开浪浪 9 10 WA的原因是小数点后只有一个0时的判断出现问题 即while循环的判断需要注意 AC_code:
#include<iostream>
#define int long long
using namespace std;
string s;
pair<int,int> check(string s){
for(int i=0;i<s.size();i++){
if(s[i]=='.') return make_pair(2,i);
if(s[i]=='/') return make_pair(3,i);
if(s[i]=='%') return make_pair(4,i);
}
return make_pair(1,0);
}
int string_reverse_int(string s){
int res=0;
for(int i=s.size()-1;i>=0;i--) res=res*10+s[i]-'0';
return res;
}
signed main(){
ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
getline(cin,s);
auto t=check(s);
int op=t.first,pos=t.second;
if(op==1) cout<<string_reverse_int(s)<<endl;
if(op==2){
string s1=s.substr(0,pos);
string s2=s.substr(pos+1,s.size());
int ans1=string_reverse_int(s1);
int ans2=string_reverse_int(s2);
while(ans2!=0&&ans2%10==0) ans2/=10;
cout<<ans1<<"."<<ans2<<endl;
}
if(op==3){
string s1=s.substr(0,pos);
string s2=s.substr(pos+1,s.size());
int ans1=string_reverse_int(s1);
int ans2=string_reverse_int(s2);
cout<<ans1<<"/"<<ans2<<endl;
}
if(op==4) cout<<string_reverse_int(s.substr(0,s.size()-1))<<"%"<<endl;
return 0;
}