90分求助
查看原帖
90分求助
280679
miaohongxuan楼主2023/3/14 22:19

#3 #19 没过

https://www.luogu.com.cn/record/104736297

#include<bits/stdc++.h>
using namespace std;
string s;
long long ans(int l,int r){
	long long cnt = 0;
	int xd=1,flag = 0;
	for(int i = l; i <= r; i++){
		if(flag == 0 && s[i] == '0'){
			xd *= 10;
		}else if(s[i] != '0'){
			flag = 1;
		}
		cnt += (s[i]-'0') * pow(10,i-l);
	}
	return cnt/xd;
}
int main(){
	int type = 0,cnt;
	cin >> s;
	int n = s.length();
	for(int i = 0; i < n; i++){
		if(s[i] == '.'){
			type = 1;
			cnt = i;
			break;
		}else if(s[i] == '/'){
			type = 2;
			cnt = i;
			break;
		}else if(s[i] == '%'){
			type = 3;
			break;
		}
	}
	if(type == 0){
		cout << ans(0,n-1);
	}else if(type == 1){
		cout << ans(0,cnt-1) << "." << ans(cnt+1,n-1);
	}else if(type == 2){
		cout << ans(0,cnt-1) << "/" << ans(cnt+1,n-1);
	}else{
		cout << ans(0,n-2) << "%";
	}
	return 0;
}

输入:12345678910111213140

答案:4131211101987654321

输出:4131211101987654144

2023/3/14 22:19
加载中...