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. 回顾Servlet开发

    1.建立的文件 2.servlet package com.shao.servlet; import javax.servlet.ServletException; import javax.serv ...

  2. 学以致用 | Redis概念与简单实操

    Redis概念 Redis是一个由C语言编写.基于key-value存储结构的开源NoSQL数据库,其读写速度为10万次/秒,这个速度已经远远大于传统的关系型数据库. 使用场景 在高并发的情况下,可将 ...

  3. html+css第七篇-表格

    表格标签: table 表格 thead 表格头 tbody 表格主体 tfoot 表格尾 tr 表格行 th 元素定义表头 td 元素定义表格单元 表格样式重置 table{border-colla ...

  4. 虚拟机Centos7安装Socks5作为代理服务器

    虚拟机Centos7安装Socks5作为代理服务器 1. 什么是代理服务器 代理服务器(Proxy Server)是一种重要的服务器安全功能,它的工作主要在开放系统互联(OSI)模型的会话层,从而起到 ...

  5. 数字逻辑实践5->Verilog语法 | wire 与 reg 的选择与特性

    问题起因:最初学习数字逻辑设计理论的时候还没有注意到,在实验课上写代码的时候发现了一个问题: 对于源码模块的变量定义,何时定义为reg.何时定义为wire?它们各自又有什么特性和物理意义? 1. wi ...

  6. 『学了就忘』Linux权限管理 — 54、sudo授权

    目录 1.什么是sudo授权 2. sudo授权说明 3.sudo命令的使用 示例1 示例2 示例3 1.什么是sudo授权 在Linux系统中,/sbin/和/usr/sbin/两个目录中的命令只有 ...

  7. 【豆科基因组】大豆(Soybean, Glycine max)泛基因组2020Cell

    目录 一.前沿概述 二.主要结果 重测序.组装与注释 泛基因组 SV特征 PAV与古多倍化,WGD事件 基因SV与基因融合 SV与大豆驯化 SV影响基因表达及其与性状关联 一.前沿概述 Pan-Gen ...

  8. python-django-请求响应对象

    用户请求终端的信息: 包括使用的ip地址,浏览器类型等 cookie: 测试测试: def print_request(request): print(request) print("!!! ...

  9. 【Python小试】判断一条序列GC含量高低

    题目: 随便给定一条序列,如果GC含量超过65%,则认为高. 编程: from __future__ import division #整数除法 def is_gc_rich(dna): length ...

  10. 金蝶EAS——客户端打开时,提示正在更新的文件d:\eas\client\bin\lib\proxy.jar被其他应用程序占用.请关闭

    解决办法: 一.通过调用任务管理器来退出,启用任务管理器需同时按下键Ctrl+Alt+Del,在应用程序中找到金蝶EAS,单击,选择结束任务即可:或者在任务管理器中选择"进程",点 ...