P1689 方程求解
#include<bits/stdc++.h>
using namespace std;
int a[5]={0},c,l,pd,wz,k=0,fl=1;
string s;
int main()
{
getline(cin,s);l=s.size();
for(int i=0;i<=l-1;i++)
{
if(s[i]==' ')
{
continue;
}
if(fl==1)
{
if(s[i]>='0'&&s[i]<='9')
{
fl++;k++;
while(s[i]>='0'&&s[i]<='9')
{
a[k]=a[k]*10+s[i]-'0';i++;
}
i--;continue;
}
if(s[i]=='?')
{
fl++;wz=1;continue;
}
}
if(fl==2)
{
if(s[i]=='+')
{
fl++;c=1;continue;
}
if(s[i]=='-')
{
fl++;c=2;continue;
}
}
if(fl==3)
{
if(s[i]>='0'&&s[i]<='9')
{
fl++;k++;
while(s[i]>='0'&&s[i]<='9')
{
a[k]=a[k]*10+s[i]-'0';i++;
}
i--;continue;
}
if(s[i]=='?')
{
fl++;wz=2;continue;
}
}
if(fl==4)
{
if(s[i]>='0'&&s[i]<='9')
{
fl++;k++;
while(s[i]>='0'&&s[i]<='9')
{
a[k]=a[k]*10+s[i]-'0';i++;
}
break;
}
if(s[i]=='?')
{
wz=3;break;
}
}
}
if(wz==1&&c==1) pd=1;
if(wz==2&&c==1) pd=1;
if(wz==3&&c==1) pd=2;
if(wz==1&&c==2) pd=2;
if(wz==2&&c==2) pd=3;
if(wz==3&&c==2) pd=3;
if(pd==1) cout<<a[2]-a[1]<<endl;
if(pd==2) cout<<a[1]+a[2]<<endl;
if(pd==3) cout<<a[1]-a[2]<<endl;
//cout<<pd<<" "<<wz<<" "<<c<<" "<<a[1]<<" "<<a[2]<<endl;
//cout<<s<<endl;
return 0;
}
测试点:R174251146 记录详情