P1022 计算器的改良
来源:洛谷 ★ 1300
本题活力0.36按难度、完成结果与训练证据估算
算法如山行则将至
题目描述
计算一元一次方程
思考与重做
王梓豪的同题记录 · 1 条
- 王梓豪 · 2026-08-07本次记录最后更新 2026.8.7
完成结果:未记录
记录系数和常数,最后做除法即可
代码
#include <bits/stdc++.h>
using namespace std;
int main() {
string s;
cin >> s;
long long x = 0;
long long c = 0;
char bianliang = 'a';
int side = 1;
int i = 0;
while (i < (int)s.size()) {
if (s[i] == '=') {
side = -1;
i++;
continue;
}
int sign = 1;
if (s[i] == '+') {
sign = 1;
i++;
} else if (s[i] == '-') {
sign = -1;
i++;
}
long long num = 0;
bool if_num = false;
while (i<(int)s.size()&&isdigit(s[i])) {
num = num * 10 + (s[i] - '0');
if_num = true;
i++;
}
if (i < (int)s.size()&&islower(s[i])) {
bianliang = s[i];
i++;
if (!if_num) {
num = 1;
}
x += side * sign * num;
} else {
c += side * sign * num;
}
}
double answer = -(double)c / x;
cout<<bianliang<<'='<<fixed<<setprecision(3)<<answer<<endl;
return 0;
}