#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include<string>
#include<cctype>
#include<algorithm>
using namespace std;
void deleteFrontZero(string& s) {
auto it = s.begin();
while (*it== '0') {
s.erase(it);
}
}
void deleteLastZero(string& s) {
for (int i = s.size() - 1; i >= 0; i--) {
if (s[i] == '0')
s.pop_back();
else
break;
}
}
int main() {
string s; size_t pos;
getline(cin, s);
if (s == "0") {
cout << '0';
return 0;
}
if (s == "0%") {
cout << "0%";
return 0;
}
if (s == "0.0") {
cout << "0.0";
return 0;
}
if (s == "0/0") {
cout << "0/0";
return 0;
}
if (s.find('.')!=string::npos) {
pos = s.find('.');
reverse(s.begin(),s.begin()+pos);
reverse(s.begin() + pos+1,s.end());
deleteFrontZero(s);
deleteLastZero(s);
pos = s.find('.');
if (s[pos] == '.' && s[pos+1] == '\0')
s += '0';
}
else if (s.find('%')!=string::npos) {
pos = s.find('%');
reverse(s.begin(),s.begin()+pos);
deleteFrontZero(s);
}
else if (s.find('/')!=string::npos) {
pos = s.find('/');
reverse(s.begin(), s.begin() + pos);
reverse(s.begin() + pos + 1, s.end());
deleteFrontZero(s);
deleteLastZero(s);
pos = s.find('/');
if (pos == 0) {
string temp = '0' + s;
s = temp;
}
if (s[pos + 1] == '0') {
size_t begin = pos + 1;
while (s[begin] == '0')
begin++;
s.erase(pos + 1, begin - (pos + 1));
}
}
else {
reverse(s.begin(), s.end());
deleteFrontZero(s);
}
for (auto e : s) {
cout << e;
}
return 0;
}
我原本70分改到现在 每次哪里有问题就加一个if 一次加五分搞到现在 95分 没招了