题解 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); } ``` 就完事了呀 求大家点个赞再走呗!