2 条题解

  • 2
    @ 2022-10-24 22:50:22

    先看末尾有没有百分号,然后遍历一遍看有没有小数点和除号,最后剩下的就是整数了。

    注意长度为 0 的时候返回个 0 而不是空字符串

    #include<bits/stdc++.h>
    using namespace std;
    string rev(string in){
        string tmp=in;
        reverse(tmp.begin(),tmp.end());
        int i=0;
        while(tmp[i]=='0'){++i;}
        tmp=tmp.substr(i,tmp.length()-i);
        if(tmp!="") return tmp;
        else return "0";
    }
    string xsrev(string input){
        string tmp = input;
        reverse(tmp.begin(),tmp.end());
        int i=tmp.length()-1;
        while(tmp[i]=='0'){--i;}
        tmp=tmp.substr(0,i+1);
        if(tmp!="") return tmp;
        else return "0";
    }
    int main(){
        string n;
        cin>>n;
        if(n[n.length()-1]=='%'){
            cout<<rev(n.substr(0,n.length()-1))<<'%';
            return 0;
        }
        for(int i=0;i<n.length()-1;i++){
            if(n[i]=='.'){
                cout<<rev(n.substr(0,i))<<'.'<<xsrev(n.substr(i+1,n.length()-i-1));
                return 0;
            }
            if(n[i]=='/'){//看到分数不约分我太高兴了
                cout<<rev(n.substr(0,i))<<'/'<<rev(n.substr(i+1,n.length()-i-1));
                return 0;
            }
        }
        cout<<rev(n);
        return 0;
    }
    
    • 0
      @ 2023-12-11 23:48:05

      python版,主要是处理0,整数和小数处理不太一样。

      def ch(s):
          return str(int(s))
      s = input()
      if "/" in s:
          s = s.split("/")
          s[0] = ch(s[0][::-1])
          s[1] = ch(s[1][::-1])
          s = "/".join(s)
          print(s)
      elif "%" in s:
          s = s[:-1][::-1]
          print(ch(s)+"%")
      elif '.' in s:
          s = s.split(".")
          s[0] = ch(s[0][::-1])
          s[1] = ch(s[1])[::-1]
          s = ".".join(s)
          print(s)
      else:
          print(ch(s[::-1]))
      
      • 1

      信息

      ID
      549
      时间
      1000ms
      内存
      125MiB
      难度
      2
      标签
      递交数
      107
      已通过
      41
      上传者