• 2019牛客暑期多校训练营(第七场)D Number——实系数多项式因式分解定理


    前置知识

    代数基本定理

    定理:每个次数 ≥ 1 复系数多项式在复数域中至少有一个跟。

    由此推出,n次复系数多项式方程在复数域内有且只有n个根(重根按重数计算)。(只要不断把多项式除以(x-xa),即可从有一个根推出有n个根)

    实系数多项式因式分解定理

    定理:每个次数 ≥ 1 实系数多项式在实数域上都可以唯一的分解成一次因式和二次不可约多项式的乘积。

    证:

    对 f(x) 的次数用数学归纳法。

    n=1时,一次多项式显然不可约,定理成立;

    假设对次数 ≤ n 时定理成立,

    设 f(x) 是 n 次多项式,由代数基本定理,f(x) 有一复根 α.

    如果 α 是实数,那么 $f(x) = (x - alpha )f_1(x)$,其中 $f_1(x)$ 为 n-1 次实系数多项式;

    如果 α 不是实数,那么 $ar alpha$ 也是 f(x) 的根,于是

    $f(x) = (x - alpha )(x - ar alpha ) f_2(x) \= [x^2 - (alpha  + ar alpha) x + a ar alpha]f_2(x)$,其中 $x^2 - (alpha  + ar alpha) x + a ar alpha$ 是实系数二次不可约多项式,从而 $f_2(x)$ 是 n-2 次实系数多项式。

    题目

    给出一个多项式,判断在实数范围内是否可分解。

    分析:

    由上面定理可知,在实数范围内任一不可约多项式只能是一次或二次的。

    除此之外,显然有奇数次实系数多项式至少有一个实根。

    (测试中含有常数

    #include<bits/stdc++.h>
    using namespace std;
    
    int n, a[25];
    
    int main()
    {
        int T;
        scanf("%d", &T);
        while(T--)
        {
            scanf("%d", &n);
            for(int i = n; i >= 0;i--)  scanf("%d", &a[i]);
            if(n <= 1 || (n == 2 && a[1] * a[1] - 4 * a[2] * a[0] < 0))  printf("Yes
    ");
            else  printf("No
    ");
        }
        return 0;
    }
  • 相关阅读:
    精彩的漫画小说
    《Java语言精粹》译者序
    群啊群
    围观透明咆哮体
    读《Cassandra权威指南》
    好书什么样?
    一个关于360和腾讯的调查
    Xcode 3.x class ations 以及outlets 去哪里了 ?
    「译」JavaScript 的 MVC 模式
    MAC OS 虚拟机里的control键设置
  • 原文地址:https://www.cnblogs.com/lfri/p/11326606.html
Copyright © 2020-2023  润新知