DolphinDash

백준 9735번: 삼차 방정식 풀기 (Python) 본문

PS/Solve

백준 9735번: 삼차 방정식 풀기 (Python)

DolphinDash 2023. 4. 5. 20:47
 

9735번: 삼차 방정식 풀기

첫째 줄에 테스트 케이스의 개수 N (0 < N < 100)이 주어진다. 다음 N개 줄에는 삼차 방정식의 계수 A, B, C, D가 한 줄에 하나씩 주어진다.

www.acmicpc.net

다항식을 더 쉽게 풀고 싶다면? 

 

조립제법 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 조립제법(組立除法, Synthetic division)이란 다항식을 내림차순으로 정리하여 계수들만 표기하는 간단한 계수들의 조립에서 간단한 곱셈과 덧셈으로만 이루어지는

ko.wikipedia.org

???: 근은 구했는데 어떻게 품?

import sys
sys.stdin.readline

n = int(input())
for i in range(n):
    A, B, C, D = map(int, input().split())
    root = [] # 근
    k = 0 # 정수해
    for num in range(-1000000, 1000001):
        if A*(num**3) + B*(num**2) + C*num + D == 0:
            k = num
            root.append(k)
            break
    a = A
    b = B+A*k
    c = C+B*k+A*(k**2)
    dis = b**2 - 4*a*c
    if dis == 0:
        root.append(-b/(2*a))
    elif dis > 0:
        root.append((-b+(b**2-4*a*c)**(0.5)) / (2*a))
        root.append((-b-(b**2-4*a*c)**(0.5)) / (2*a))
    else:
        pass
    root.sort()
    root = list(set(root))
    for i in range(len(root)):
        print(f"{round(root[i],4)}", end=' ')
    print()

시간제한이 2초니까 정수해는 for문으로 찾고 실수해는 근의 공식을 이용해서 찾으면 된다.

'PS > Solve' 카테고리의 다른 글

백준 1010번: 다리 놓기 (Python)  (0) 2023.05.23
백준 1991번: 트리 순회 (Python)  (0) 2023.05.20
백준 16953번: A → B (Python)  (0) 2023.05.19
백준 1629번: 곱셈 (Python)  (0) 2023.04.06
백준 5397번: 키로거 (Python)  (0) 2023.04.06