测试点输进去对了,提交错了,0tps
查看原帖
测试点输进去对了,提交错了,0tps
1067416
wlx2012楼主2024/10/6 00:15

代码:

#include<bits/stdc++.h>
using namespace std;
#define int long long
string s1,s2;
vector<string> v1,v2;
char ch;
int sum1,sum2;
void init(){
	string t;
	getline(cin,t);
    for(int i = 0;i<t.size();i++){
		if(!(t[i]>='0'&&t[i]<='9'||t[i]=='-'||t[i]=='+'||t[i]==' ')){
			ch=t[i];
            break;
		}
    }
	int i;
	for(i = 0;t[i]!='=';i++){
		if(t[i]!=' '){
			s1=s1+t[i];
		}
	}
	i++;
	for(;i<t.size();i++){
		if(t[i]!=' '){
			s2=s2+t[i];
		}
	}
	if(s1[0]=='-'){
	}
	else{
		s1='+'+s1;
	}
	if(s2[0]=='-'){
	}
	else{
		s2='+'+s2;
	}
	t="";
	for(int i = 0;i<s1.size();i++){
		if(s1[i]=='-'||s1[i]=='+'){
			v1.push_back(t);
			t="";
		}
		t+=s1[i];
	}
	v1.push_back(t);
	t="";
	for(int i = 0;i<s2.size();i++){
		if(s2[i]=='-'||s2[i]=='+'){
			v2.push_back(t);
			t="";
		}
		t+=s2[i];
	}
	v2.push_back(t);
} 
int fch(string p){
	int t1=0,t2=1,i=1;
	if(p[0]=='-'){
		t2=-1;
	}
	if(p.size()==2){
		return t2;
	}
	for(int i = 1;i<p.size()-1;i++){
		t1=t1*10+p[i]-'0';
	}
	return t2*t1;
}
int fnum(string p){
	int t1=0,t2=1,i=1;
	if(p[0]=='-'){
		t2=-1;
	}
	for(int i = 1;i<p.size();i++){
		t1=t1*10+p[i]-'0';
	}
	return t2*t1;
}
signed main(){
//	freopen("1.in","r",stdin);
//	freopen("2.out","w",stdout);
	init();
	for(int i = 0;i<v1.size();i++){
		if(v1[i][v1[i].size()-1]==ch){
			sum1+=fch(v1[i]); 
		}
	}
	for(int i = 0;i<v2.size();i++){
		if(v2[i][v2[i].size()-1]==ch){
			sum1-=fch(v2[i]); 
		}
	}
	for(int i = 0;i<v1.size();i++){
		if(v1[i][v1[i].size()-1]!=ch){
			sum2+=fnum(v1[i]);  
		}
	}
	for(int i = 0;i<v2.size();i++){
		if(v2[i][v2[i].size()-1]!=ch){
			sum2-=fnum(v2[i]); 
		}
	}
	cout<<ch<<"="; 
	printf("%.3f\n",double(sum2*(-1.0)/sum1));
	return 0;
}

思路:

求出系数,使用求根公式

sum2:常数

sum1:一次项系数

2024/10/6 00:15
加载中...