#1,3,19 #9,10 WA
查看原帖
#1,3,19 #9,10 WA
1091709
Cloud_Ivy37楼主2024/8/10 15:50

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;
}
2024/8/10 15:50
加载中...