70分,求助
查看原帖
70分,求助
1318727
1357911BCC楼主2024/10/26 09:24
#include <bits/stdc++.h>
using namespace std;
string s;
void _fz(string &a){
	int i = 0, j = a.size() - 1;
	while (i <= j) {
		swap(a[i], a[j]);
		i++;
		j--;
	}
}
int _0(string a){
	int left = 0;
	while (a[left] == '0') left++;
	return left;
}

int main() {
	getline(cin, s);
	int len = s.size();
	int flag1 = 0, flag2 = 0, flag3 = 0;
	for (int i = 0; i < len; i++) {
		if (s[i] == '.') {
			flag1 = 1;
			break;
		}
		if (s[i] == '/') {
			flag2 = 1;
			break;
		}
		if (s[i] == '%') {
			flag3 = 1;
			break;
		}
	}
	if (flag1 != 1 && flag2 != 1 && flag3 != 1) {
		_fz(s);
		int left = _0(s);
		for (int i = left; i < len; i++) {
			cout << s[i];
		}
	}
	else if(flag1 == 1) {
		string a, b, c;
		for (int i = 0; i < len; i++) {
			if (s[i] >= '0' && s[i] <= '9') {
				c += s[i];
			} else {
				a = c;
				c = "";
			}
		}
		b = c;
		_fz(a);
		_fz(b);
		int left1 = _0(a),right1 = b.size() - 1;
		while(b[right1] == '0') right1--;
		for(int i = left1;i < a.size();i++) cout << a[i];
		cout << ".";
		for(int i = 0;i <= right1;i++) cout << b[i];
	}
	else if(flag2 == 1){
		string a, b, c;
		for (int i = 0; i < len; i++) {
			if (s[i] >= '0' && s[i] <= '9') {
				c += s[i];
			} else {
				a = c;
				c = "";
			}
		}
		b = c;
		_fz(a);
		_fz(b);
		int left1 = _0(a),left2 = _0(b);
		for(int i = left1;i < a.size();i++) cout << a[i];
		cout << "/";
		for(int i = left2;i < b.size();i++) cout << b[i];
	}
	else if(flag3 == 1){
		s = s.erase(s.size() - 1);
		_fz(s);
		int left = _0(s);
		for(int i = left;i < len - 1;i++) cout << s[i];
		cout << '%';
	}
	return 0;
}
2024/10/26 09:24
加载中...