题目背景
lx在数学考试考了全级第一,于是膨胀了。
老师布置了一道关于x的简易的一元一次方程让lx做,lx觉得太简单了, 于是把这道题甩给了你。
题目描述
给出一个关于x的简易的一元一次方程,请你求出方程的解。 (保证方程内不含小数,分数,括号)
输入格式
一行,一个关于x的简易的一元一次方程 (保证数据用int就能过)
输出格式
一行,形如“x=m”的形式,m为方程的解
输入输出样例
输入 #1复制
5x-7=9-3x
输出 #1复制
x=2
输入 #2复制
7x+6=16-3x
输出 #2复制
x=1
说明/提示
作者:xywuyu
题解:
//这是一名退役老兵出的题,向他致敬∠(°ゝ°)
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n,a,cs=0,si=0,y;
string s;
cin>>s;
n=s.size();
for (int i=0;i<n&&s[i]!='=';i++)
{
if (s[i-1]=='=')
break;
a=0;
if (s[i]=='x')
{
si+=1;
}
if (s[i]=='-')
{
i+=1;
while (s[i]>='0'&&s[i]<='9')
{
a*=10;
a+=s[i]-'0';
i+=1;
}
a*=-1;
if (a==0)
a=-1;
if (s[i]=='x')
si+=a;
else cs+=(a*-1);
}
if (s[i]>='0'&&s[i]<='9')
{
while (s[i]>='0'&&s[i]<='9')
{
a*=10;
a+=s[i]-'0';
i+=1;
}
if (s[i]=='x')
si+=a;
else cs+=(a*-1);
}
y=i;
}
//cout<<cs<<" "<<si<<"\n";
for (int i=y+1;i<n;i++)
{
//cout<<cs<<"\n";
a=0;
if (s[i]=='x')
{
si+=-1;
}
if (s[i]=='-')
{
i+=1;
while (s[i]>='0'&&s[i]<='9')
{
a*=10;
a+=s[i]-'0';
i+=1;
}
a*=-1;
if (a==0)
a=-1;
if (s[i]=='x')
si+=(a*-1);
else {
cs+=a;i-=1;continue;
}
}
if (s[i]>='0'&&s[i]<='9')
{
while (s[i]>='0'&&s[i]<='9')
{
a*=10;
a+=s[i]-'0';
i+=1;
}
if (s[i]=='x')
si+=(a*-1);
else {
cs+=a;i-=1;
}
}
}
cout<<"x="<<double(cs)/double(si);
return 0;
}