95分求助——卡在#8
查看原帖
95分求助——卡在#8
678558
Wan2co楼主2022/5/24 11:19

rt,希望大佬们能指正一下错误,或者告诉一下第8个测试点的数据。。。万分感谢

#include<bits/stdc++.h>
using namespace std;

bool isZero=true;//记录前导零 
int endZ=0;//记录后导零 
int zr=0;//小数点前为0 

int main(){
	string s;
	cin>>s;
	int rec=0,place=0;
	for(int i=0;i<s.size();i++){
		if(s[i]=='.'){
			rec=1;
			place=i;
		} 
		if(s[i]=='/'){
			rec=2;
			place=i;
		} 
		if(s[i]=='%'){
			rec=3;
		} 
	}

	if(rec==0){//整数 
		if(s[0]=='0'){
			cout<<0;
			return 0;
		}
		reverse(s.begin(),s.end());
		for(int i=0;i<s.size();i++){
			if(s[i]=='0'&&isZero==true)continue;
			else{
				isZero=false;
				cout<<s[i];
			}
		}
	}
	else if(rec==1){//小数 
		if(s[0]=='0'&&place==1){//特判0.x
			zr=1;
		}
		reverse(s.begin(),s.begin()+place);
		reverse(s.begin()+place+1,s.end());
		for(int i=0;i<place;i++){
			if(zr==1){
				cout<<0;
				break;
			}
			else if(s[i]=='0'&&isZero==true)continue;
			else{
				isZero=false;
				cout<<s[i];
			}
		}
		cout<<'.';
		if(s.size()-place==2&&s[s.size()-1]=='0'){
			cout<<0;
			return 0;
		}
		for(int i=s.size()-1;i>place;i--){
			if(s[i]=='0')endZ++;
		}
		for(int i=place+1;i<s.size()-endZ;i++){
				cout<<s[i];
		}
	}
	else if(rec==2){//分数 
		if(s[0]=='0'&&place==1){//特判0/x
			zr=1;
		}
		reverse(s.begin(),s.begin()+place);
		reverse(s.begin()+place+1,s.end());
		for(int i=0;i<place;i++){
			if(zr==1){
				cout<<0;
				break;
			}
			else if(s[i]=='0'&&isZero==true)continue;
			else{
				isZero=false;
				cout<<s[i];
			}
		}
		isZero=true;
		cout<<'/';
		for(int i=place+1;i<s.size();i++){
			if(s[i]=='0'&&isZero==true)continue;
			else{
				isZero=false;
				cout<<s[i];
			}
		}		
	}
	else{//百分数 
		if(s=="0%"){
		cout<<s;
		return 0;
		}
		reverse(s.begin(),s.end()-1);
		for(int i=0;i<s.size()-1;i++){
			if(s[i]=='0'&&isZero==true)continue;
			else{
				isZero=false;
				cout<<s[i];
			}
		}
		cout<<'%';
	}		
    return 0;
}
2022/5/24 11:19
加载中...