Content

输入一个多项式 \(x^2+ax+b\)(不保证 \(a,b\neq0\)),请对这个多项式进行因式分解(形式为 \((x-x_1)(x-x_2)\),其中 \(x_1>x_2\))。

数据范围:\(a,b<2^{31}\)。

Solution

这道题目看上去很简单,做起来却有很多的细节要注意。

首先,我们可以得到一个大致的思路:得到 \(a,b\) 之后利用求根公式求出 \(x_1,x_2\):

\[x_{1,2}=\dfrac{-a\pm\sqrt{a^2-4b}}{2}
\]

当然,这是按照题目进行变化后得到的式子,我想你们应该都熟悉这个:\(\dfrac{-b\pm\sqrt{b^2-4ac}}{2a}\),但因为保证了二次项系数是 \(1\),所以没什么必要。

那么完了以后,我们的因式分解的结果就是 \((x-x_1)(x-x_2)\),当然,首先如果 \(x_1<x_2\),就得要交换。输出的时候分以下三种情况讨论:

  • \(x<0\),此时因为前面已经带了负号,所以直接用 printf("(x%d)", x) 就好。
  • \(x=0\),此时直接输出 x
  • \(x>0\),此时用 printf("(x+%d)", x) 输出。

总体来讲就是以上这些操作,还需注意一下将 \(a,b\) 从字符串中提取出来的问题,具体请读者看代码自行理解。

Code

#include <cstdio>
#include <algorithm>
#include <cstring>
#include <cmath>
#include <iostream>
using namespace std; string s;
double a, b, flagx, f, now; void print(int xx) {
if(xx < 0) printf("(x%d)", xx);
else if(!xx) printf("x");
else printf("(x+%d)", xx);
} int main() {
cin >> s;
int n = s.size();
f = 1;
for(int i = 3; i < n; ++i)
if(s[i] == 'x') flagx = 1;
if(!flagx) {
now = 0;
for(int i = 3; i < n; ++i) {
if(s[i] == '-') f *= -1;
else if(isdigit(s[i])) now = now * 10 + s[i] - '0';
}
b = f * now;
} else {
now = 0;
for(int i = 3; i < n; ++i) {
if(s[i] == 'x' && i == 3) {
a = 1;
now = 0, f = 1;
} else if(s[i] == 'x' && i > 3) {
a = now * f;
now = 0; f = 1;
} else if(s[i] == '-') f *= -1;
else if(isdigit(s[i])) now = now * 10 + s[i] - '0';
// printf("now=%d\n\n", now);
}
b = f * now;
}
double x1 = -(-a + sqrt(a * a - 4 * b)) / 2, x2 = -(-a - sqrt(a * a - 4 * b)) / 2;
// printf("%d %d %d %d\n", a, b, x1, x2);
if(x1 == x2) {
print(x1);
printf("^2");
} else {
if(x1 < x2) swap(x1, x2);
print(x1), print(x2);
}
return 0;
}

LuoguP2378 因式分解II 题解的更多相关文章

  1. Leetcode 137. 只出现一次的数字 II - 题解

    Leetcode 137. 只出现一次的数字 II - 题解 137. Single Number II 在线提交: https://leetcode.com/problems/single-numb ...

  2. 洛谷P3412 仓鼠找$Sugar\ II$题解(期望+统计论?)

    洛谷P3412 仓鼠找\(Sugar\ II\)题解(期望+统计论?) 标签:题解 阅读体验:https://zybuluo.com/Junlier/note/1327573 原题链接:洛谷P3412 ...

  3. 洛谷10月月赛II题解

    [咻咻咻] (https://www.luogu.org/contestnew/show/11616) 令人窒息的洛谷月赛,即将参加NOIp的我竟然只会一道题(也可以说一道也不会),最终145的我只能 ...

  4. Blocked Billboard II题解--模拟到崩溃的模拟

    前言 比赛真的状态不好(腐了一小会),导致差点爆0. 这个题解真的是在非常非常专注下写出来的,要不然真的心态崩. 题目 题目描述 奶牛Bassie想要覆盖一大块广告牌,她在之前已经覆盖了一小部分广告牌 ...

  5. HDU 2236 无题II 题解

    题目 这是一个简单的游戏,在一个n*n的矩阵中,找n个数使得这n个数都在不同的行和列里并且要求这n个数中的最大值和最小值的差值最小. 输入格式 输入一个整数\(T\)表示\(T\)组数据. 对于每组数 ...

  6. COGS 2437 暗之链锁 II 题解

    [题意] 给出一个有n个点的无向图,其中有n-1条主要边且这些主要边构成一棵树,此外还有m条其他边,求斩断原图的一条主要边和k条其他边使得图不连通的方案数mod109+7的值. 注意,就算你切断一条主 ...

  7. [LeetCode] Trapping Rain Water II 题解

    题意 题目 思路 我一开始想的时候只考虑到一个结点周围的边界的情况,并没有考虑到边界的高度其实影响到所有的结点盛水的高度. 我们可以发现,中间是否能够盛水取决于边界是否足够高于里面的高度,所以这必然是 ...

  8. 洛谷P1288 取数游戏II 题解 博弈论

    题目链接:https://www.luogu.org/problem/P1288 首先,如果你的一边的边是 \(0\) ,那么你肯定走另一边. 那么你走另一边绝对不能让这条边有剩余,因为这条边有剩余的 ...

  9. 洛谷P4860 Roy&October之取石子II 题解 博弈论

    题目链接:https://www.luogu.org/problem/P4860 和<P4018 Roy&October之取石子>一样的推导思路,去找循环节. 可以发现:只要不能被 ...

随机推荐

  1. volatile不能保证数据完整性的小案例

    package juc; import java.util.Collections; import java.util.HashSet; import java.util.Set; public cl ...

  2. Codeforces 690A2 - Collective Mindsets (medium)

    Codeforces 题面传送门 & 洛谷题面传送门 一道脑筋急转弯的结论题. 首先我们考虑对于某个特定的金币数 \(m\),有哪些 \(n\) 满足条件.考虑最 naive 的情况,\(m= ...

  3. Java设计模式之(十四)——策略模式

    1.什么是策略模式? Define a family of algorithms, encapsulate each one, and make them interchangeable. Strat ...

  4. python-django111111111111

    111 内置电池的意思就是,内置了很多功能,插件等等帮助文档:https://docs.djangoproject.com/en/3.0/ model,很多集成的东西,连接数据库等 vierm: Te ...

  5. R语言与医学统计图形【4】直方图、金字塔图

    R语言基础绘图系统 基础图形--直方图.金字塔图 3.直方图 参数设置及比较. op <- par(mfrow=c(2,3)) data <- rnorm(100,10,5) hist(d ...

  6. Oracle-除了会排序,你对ORDER BY的用法可能一无所知!

    导读 为什么只有ORDER BY后面可以使用列别名 为什么不推荐使用ORDER BY后接数字来排序 为什么视图和子查询里面不能使用ORDER BY -- ​小伙伴们在进行SQL排序时,都能很自然的使用 ...

  7. Hive-insert into table 与 insert overwrite table 区别

    区分insert into 和 insert overowrite: 0. 命令格式 INSERT OVERWRITE|INTO TABLE tablename [PARTITION (partcol ...

  8. Hive-删除表(drop、truncate的区别)

    Hive删除操作主要分为几大类:删除数据(保留表).删除库表.删除分区.我将以下图为例清空iot_devicelocation中的数据,之后再删除表.库等. 解释: use xpu123;   #使用 ...

  9. 搭建zabbix服务器常见问题解析处理

    1. 找不到url 2. 服务器无法处理当前请求,PHP解析出错 3. 服务器无法处理当前请求,权限不足 1. 找不到url 浏览器报错:The requested URL /zabbix/ was ...

  10. c#页面查询、数据显示

    page : <%@ Control Language="C#" AutoEventWireup="true" CodeFile="Queryx ...