为什么会输出 -0.000 这种数字
查看原帖
为什么会输出 -0.000 这种数字
511609
无钩七不改名楼主2024/4/15 07:00

RT.

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

本来第五个测试点是 0.000,但是输出了 -0.000

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

const int N=1000005;

char s[N],x[N];
bool nw;
int fh=1,cnt;
long long zb,yb;

int main(){
	scanf(" %s",s);
	int sz=strlen(s);
	for(int i(0);i<sz;++i)if(s[i]>='a'&&s[i]<='z'){
		while(i<sz&&s[i]>='a'&&s[i]<='z')x[++cnt]=s[i],++i;
		break;
	}
	//puts("qwq");
	for(int i(0);i<sz;++i){
		if(s[i]=='=')nw=1;
		else{
			long long qwq=0;
			if(s[i]=='+')++i;
			else if(s[i]=='-')fh=-1,++i;
			while(s[i]>='0'&&s[i]<='9'&&i<sz)qwq=qwq*10+s[i]-'0'/*,cout<<i<<'\n'*/,++i;
			//cout<<i<<'\n';
			if(s[i]==x[1]){
				if(!qwq)qwq=1;
				i+=cnt;
				if(nw)zb-=fh*qwq;
				else zb+=fh*qwq;
			}
			else{
				if(nw)yb+=fh*qwq;
				else yb-=fh*qwq;
			}
			--i;
			//puts("qwq");
		}
		fh=1;
	}
	for(int i(1);i<=cnt;++i)printf("%c",x[i]);
	if(yb)printf("=%.3f",1.0*yb/zb);
	else puts("=0.000");
	return 0;
}

thxqwq

2024/4/15 07:00
加载中...