• 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;
    }
  • 相关阅读:
    用场景来规划测试工作
    冲刺第二十天 到二十二天
    冲刺第十九天
    冲刺第十八天
    阅读《构建之法》第13-17章(包含读后感)
    冲刺第5,6天(5月25,26日)
    冲刺第四天(2天合一起当一篇随笔,明天会在这篇里继续更新)
    冲刺第二天
    作业5.2
    作业5.1
  • 原文地址:https://www.cnblogs.com/lfri/p/11326606.html
Copyright © 2020-2023  润新知