#luogu整理 P1022 计算器的改良:模拟
回忆一下自己AC的第一个黄题(模拟
luogu P1022
我们要解一元一次方程,我们就可以把它整理成一般形式(不一定是一般形式,只要能知道系数就行),然后直接根据公式求出来就好。
#include<bits/stdc++.h>
using namespace std;
char in[99999];
int l,r;
int deng;
char a='y';
int xs[99999],zrh[99999];
double xishu,changshu;
int cnt1,cnt2;
int main(){
cin>>in;
for(int i=0;i<strlen(in);i++){
if(in[i]=='='){
deng=i;
}
if((in[i]>'9'||in[i]<'0')&&(in[i]!='-'&&in[i]!='+'&&in[i]!='=')){
a=in[i];
// cout<<in[i]<<endl;
}
}
// cout<<a<<endl;
int asdf=0;
while(r<strlen(in)){
l=r;
asdf=0;
while(in[r]>='0'&&in[r]<='9'){
r++;
}
// cout<<l<<' '<<r<<" ";
if((r-l)>=1){
for(int i=l;i<r;i++){
asdf=asdf*10+int(in[i]-'0');
}
if(in[l-1]=='-') asdf*=-1;
if(in[r]==a){
r++;
if(l<deng) asdf*=-1;
xs[cnt1]=asdf;
xishu+=xs[cnt1];
cnt1++;
}else{
if(r>deng) asdf*=-1;
zrh[cnt2]=asdf;
changshu+=zrh[cnt2];
cnt2++;
}
}
// cout<<asdf<<endl;
r++;
}
if(in[0]==a) xishu--;
double ans;
// cout<<xishu<<endl;
ans=double(changshu/xishu);
if(ans==0) ans=0;
printf("%c=%.3f",a,ans);
return 0;
}