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 |
Tags
- 16953
- 다리 놓기
- 고속거듭제곱알고리즘
- 문제풀이
- 경상국립대학교
- 7576번
- 백준 1158
- 9735번
- ncloud서버
- json
- Django
- 백준 7576번
- 백준
- 그래프 탐색
- python
- max_length
- epsp
- 백준 다리놓기
- NaverCloudPlatform
- 백준 1158번
- PS
- lgh
- Charfield
- ncp배포
- 1010번: 다리 놓기 (Python)
- 백준 7576
- 5397
- 요세푸스 문제
- 백준 토마토
- linc3.0
Archives
- Today
- Total
DolphinDash
백준 9735번: 삼차 방정식 풀기 (Python) 본문
다항식을 더 쉽게 풀고 싶다면?
???: 근은 구했는데 어떻게 품?
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 |