题解 P2378 【因式分解II】
伟大的王夫子
·
·
题解
先安利我的博客
这题比较简单(虽然调试了这么久),先读入多项式ax^2+bx+c,再求出a,b, c的值,再套求根公式
~~吐槽一下。代码有必要那么长吗?~~
~~我的代码巨短~~
```cpp
#include <bits/stdc++.h>
using namespace std;
string a, c;
double b[10], x1, x2;
void work(double x) {
if (x == 0) cout << "x";
else {
cout << "(x";
if (x > 0) cout << "+" << x << ")";
else cout << "-" << -x << ")";
}
}
int main() {
cin >> a;
b[1] = 1;//x^2的系数为1
a.erase(0, 3);
int pos = a.find('x');
if (pos == -1) b[2] = 0;
else {
c = a.substr(0, pos + 1);
c.erase(--c.end());//忽略x
if (c == "+") b[2] = 1;
else if (c == "-") b[2] = -1;//特判正负1
else b[2] = atof(c.c_str());//求b的系数
}
if (pos == -1) b[3] = atof(a.c_str());
else if (pos == a.size()) b[3] = 0;
else c = a.substr(pos + 1), b[3] = atof(c.c_str());//求c的系数
//cout << b[1] << ' ' << b[2] << ' ' << b[3];
x2 = (-b[2] + sqrt(b[2] * b[2] - 4 * b[1] * b[3])) / b[1] / 2;
x1 = (-b[2] - sqrt(b[2] * b[2] - 4 * b[1] * b[3])) / b[1] / 2;//求根
//cout << x1 << ' ' << x2;
if (x1 == x2) work(-x1), cout << "^2";
else work(-x1), work(-x2);
}
```
就完事了呀
求大家点个赞再走呗!