1 条题解

  • 0
    @ 2025-8-24 21:37:01

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar 伟大的王夫子
    hanser忠实粉丝,爱好ACG、古风

    搬运于2025-08-24 21:37:01,当前版本为作者最后更新于2020-01-17 15:05:58,作者可能在搬运后再次修改,您可在原文处查看最新版

    自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多

    以下是正文


    先安利我的博客

    这题比较简单(虽然调试了这么久),先读入多项式ax2+bx+cax^2+bx+c,再求出a,b,ca,b, c的值,再套求根公式 x=b±b24ac2ax=\dfrac{-b \pm \sqrt{b^2-4ac}}{2a},即可因式分解。代码如下

    吐槽一下。代码有必要那么长吗?

    我的代码巨短

    #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);
    }
    

    就完事了呀

    求大家点个赞再走呗!

    • 1

    信息

    ID
    1386
    时间
    1000ms
    内存
    125MiB
    难度
    3
    标签
    递交数
    0
    已通过
    0
    上传者