https://www.luogu.org/problemnew/show/P1022
服了,居然还有+0.000和-0.000的不同,真的服了。
#include<bits/stdc++.h> using namespace std; #define ll long long //a1x+b1=a2x+b2 double a1,b1,a2,b2; int main(){ string s; string s1; string s2; while(cin>>s){ int n=s.length(); char c; for(int i=0;i<n;i++){ if(s[i]=='='){ s1=s.substr(0,i); s2=s.substr(i+1,n); break; } } int n1=s1.length(); int n2=s2.length(); //cout<<s1<<" "<<s2<<endl; double cur=0; double flag=1; for(int i=0;i<n1;i++){ if(s1[i]=='-'){ b1+=flag*cur; flag=-1; cur=0; } else if(s1[i]=='+'){ b1+=flag*cur; flag=+1; cur=0; } else if(isalpha(s1[i])){ c=s1[i]; if(cur==0) cur=1; a1+=flag*cur; cur=0; } else{ cur*=10; cur+=(s1[i]-'0'); } } b1+=flag*cur; flag=1; cur=0; //cout<<a1<<" "<<b1<<endl; for(int i=0;i<n2;i++){ if(s2[i]=='-'){ b2+=flag*cur; flag=-1; cur=0; } else if(s2[i]=='+'){ b2+=flag*cur; flag=+1; cur=0; } else if(isalpha(s2[i])){ c=s2[i]; if(cur==0) cur=1; a2+=flag*cur; flag=+1; cur=0; } else{ cur*=10; cur+=(s2[i]-'0'); } } b2+=flag*cur; flag=1; cur=0; //cout<<a2<<" "<<b2<<endl; //ax=b double a=a1-a2; double b=b2-b1; double ans=b/a; if(fabs(ans)<1e-6) ans=0; printf("%c=%.3f ",c,ans); } }