求大佬帮忙,第三个点RE了,过不了
查看原帖
求大佬帮忙,第三个点RE了,过不了
609811
accccccc楼主2022/8/4 09:25
#include <iostream>
#include <cstring>
#include <cmath>
#include <algorithm>
#include <unordered_map>
#include <string>
#define ll long long
using namespace std;
#define INF 0x3f3f3f3f
const int N = 210;
int main() {
	string s;
	cin >> s;
	//判定字符串是哪种类型的数字 
	bool num = 0, fudian = 0, fenshu = 0, baifen = 0;
	if(s.find('.') != -1) fudian = 1;
	if(s.find('/') != -1) fenshu = 1;
	if(s.find('%') != -1) baifen = 1;
	if(!fudian && !fenshu && !baifen) num = 1;
	
	//整数情况 
	if(num) {
		ll x = stol(s);
		ll y = 0;
		while(x) {
			y = y * 10 + (x % 10);
			x /= 10;	
		}
		cout << y;
	//浮点数 
	} else if(fudian) {
		int wz = s.find('.');
		int n = s.size();
		ll zs = stol(s.substr(0, wz));
		ll xs = stol(s.substr(wz+1, n-wz-1));
		ll zsy = 0, xsy = 0;
		while(zs) {
			zsy = zsy * 10 + (zs % 10);
			zs /= 10;
		}
		cout << zsy << ".";
		while(xs) {
			xsy = xsy * 10 + (xs % 10);
			xs /= 10;
		}
		cout << xsy;
	//分数 
	} else if(fenshu) {
		int wz = s.find('/');
		int n = s.size();
		ll fz = stol(s.substr(0, wz));
		ll fm = stol(s.substr(wz+1, n - wz - 1));
		ll fzy = 0, fmy = 0;
		while(fz) {
			fzy = fzy * 10 + (fz % 10);
			fz /= 10;
		}
		cout << fzy << "/";
		while(fm) {
			fmy = fmy * 10 + (fm % 10);
			fm /= 10;
		}
		cout << fmy;
	//百分数 
	} else {
		int n = s.size();
		int wz = s[n-1];
		ll x = stol(s.substr(0, wz-1));
		ll y = 0;
		while(x) {
			y = y * 10 + (x % 10);
			x /= 10;
		}
		cout << y << "%";
	}
	return 0;
}
2022/8/4 09:25
加载中...