90分??#9#10TLE了??
查看原帖
90分??#9#10TLE了??
632412
ZhouJiangyue楼主2022/8/7 10:00
#include<bits/stdc++.h>
using namespace std;

int main(){
	string s;
	bool z=0,x=0,f=0,b=0;
	long double ans1=0;
	long long ans2=0;
	cin>>s;
	if(s[s.size()-1]=='%')b=1;
	else{
		for(int i=0;i<s.size();i++){
			if(s[i]=='/'){
				f=1;
				break;
			}
			else if(s[i]=='.'){
				x=1;
				break;
			}
		}
		if(!x&&!f)z=1;
	}
	if(z){
		for(int i=s.size()-1;i>=0;i--){
			ans1*=10;
			ans1+=(s[i]-'0');
		}
		printf("%.0Lf",ans1);
	}
	else if(x){
		bool flag=1;
		for(int i=s.size()-1;i>=0;i--){
			if(s[i]=='.'){
				flag=0;
				continue;
			} 
			if(flag){
				ans2*=10;
				ans2+=(s[i]-'0');
			}
			else {
				ans1*=10;
				ans1+=(s[i]-'0');
			}
		} 
		while(ans2%10==0){
			ans2/=10;
		}
		printf("%.0Lf.%lld",ans1,ans2);
	}
	else if(f){
		bool flag=1;
		for(int i=s.size()-1;i>=0;i--){
			if(s[i]=='/'){
				flag=0;
				continue;
			} 
			if(flag){
				ans2*=10;
				ans2+=(s[i]-'0');
			}
			else {
				ans1*=10;
				ans1+=(s[i]-'0');
			}
		} 
		while(ans2%10==0){
			ans2/=10;
		}
		printf("%.0Lf/%lld",ans1,ans2);
	}
	else{
		for(int i=s.size()-2;i>=0;i--){
			ans1*=10;
			ans1+=(s[i]-'0');
		}
		printf("%.0Lf%%",ans1);
	}
	return 0;
} 

(写得有点乱)

2022/8/7 10:00
加载中...