代码:
#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:一次项系数