首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> 關於C++

POJ 2126 Factoring a Polynomial:代數基本定理判斷多項式可約性

     編輯:關於C++

題目大意

給多項式次數 n 及係數。判斷其在實數域內是否可分解為次數更低的多項式乘積。n ≤ 100,但實際只有 n=2 需判斷,n>2 必可分解,n<2 不可分解(一次式不可約)。

核心數學定理:代數基本定理推論

  • 實係數多項式在實數域內,不可約因式次數僅能為 1 或 2。
  • 因此:
    - n > 2:必可分解(含至少一個二次或一次因式)。
    - n = 2:判別式 `Δ = b² - 4ac`。Δ ≥ 0 有實根可分解;Δ < 0 無實根不可約。
    - n < 2:一次式或常數,不可分解(題目定義「分解」為分解為次數更低的多項式乘積,一次式無法分解)。

代碼


#include 
using namespace std;

int main() {
    int n;
    while (~scanf("%d", &n)) {
        int a, b, c;
        scanf("%d%d%d", &a, &b, &c); // 實際只用 n 和二次係數
        if (n > 2) puts("NO");
        else if (n < 2) puts("YES");
        else {
            if (b*b - 4*a*c >= 0) puts("NO");
            else puts("YES");
        }
    }
    return 0;
}

注意

  • 輸入格式:第一行 n,第二行 a b c(最高次係數、次高、常數項?題目實際只給三個係數,對應二次項、一次項、常數項)。
  • 輸出 "YES" 表示不可分解(irreducible),"NO" 表示可分解。注意含義相反。

總結

POJ 2126 是純數學題:**代數基本定理** 直接給出答案。無需實際因式分解,只需判斷次數與二次式判別式。代碼極短,考驗數學基礎。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved