Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- ncp배포
- NaverCloudPlatform
- linc3.0
- 9735번
- PS
- epsp
- 1010번: 다리 놓기 (Python)
- 백준 1158번
- 백준
- Charfield
- max_length
- 문제풀이
- Django
- lgh
- 요세푸스 문제
- 5397
- ncloud서버
- 고속거듭제곱알고리즘
- 경상국립대학교
- 백준 7576
- python
- 7576번
- 백준 토마토
- 백준 7576번
- 다리 놓기
- 16953
- 백준 다리놓기
- 백준 1158
- 그래프 탐색
- json
Archives
- Today
- Total
DolphinDash
백준 9735번: 삼차 방정식 풀기 (Python) 본문
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 |