明明输出是对的,为什么0分
查看原帖
明明输出是对的,为什么0分
1003284
封禁用户楼主2023/12/22 17:37
#include<bits/stdc++.h>
using namespace std;
string s,a,b;
bool first;
int la,ln,ra,rn,flag,nown;
char zm;
int main() {
	getline(cin,s);
	for (auto&i:s)if ('a'<=i&&i<='z')zm=i;
	for (int i=0; i<s.size(); i++) {
		if (s[i]!='=')a+=s[i];
		else break;
	}
	for (int i=a.size()+1; i<s.size(); i++)b+=s[i];
	queue<char> q1,q2;
	for(auto&i:a)q1.push(i);
	q1.push('?');
	for(auto&i:b)q2.push(i);
	q2.push('?');
	first=1;
	while(!q1.empty()) {
		char now=q1.front();
		if (first) {
			if (now==zm) {
				la+=1;
			} else if ('0'<=now&&now<='9') {
				flag=1;
				nown=now^48;
			} else {
				flag=-1;
			}
			first=0;
		} else {
			if (now==zm) {
				la+=nown*flag;
				nown=0;
			} else if (now=='+'||now=='?') {
				ln+=nown*flag;
				flag=1;
				nown=0;
			} else if (now=='-') {
				ln+=nown*flag;
				flag=-1;
				nown=0;
			} else {
				nown=nown*10+(now^48);
			}
		}
		q1.pop();
	}
	while(!q2.empty()) {
		char now=q2.front();
		if (first) {
			if (now==zm) {
				ra+=1;
			} else if ('0'<=now&&now<='9') {
				flag=1;
				nown=now^48;
			} else {
				flag=-1;
			}
			first=0;
		} else {
			if (now==zm) {
				ra+=nown*flag;
				nown=0;
			} else if (now=='+'||now=='?') {
				rn+=nown*flag;
				flag=1;
				nown=0;
			} else if (now=='-') {
				rn+=nown*flag;
				flag=-1;
				nown=0;
			} else {
				nown=nown*10+(now^48);
			}
		}
		q2.pop();
	}
	double ans,bns;
	ans=la-ra;
	bns=ln-rn;
	bns=-bns;
	printf("%c=%.3lf",zm,bns/ans);
	return 0;
}
2023/12/22 17:37
加载中...