728x90
▶14786 - Ax+Bsin(x)=C ②
▶문제
A, B, C가 주어졌을 때, Ax+Bsin(x)=C를 만족하는 x를 찾는 프로그램을 작성하시오.
▶입력
첫째 줄에 정수 A, B, C가 주어진다. (0 < B ≤ A ≤ 100,000, 0 < C ≤ 100,000)
▶출력
첫째 줄에 x를 출력한다. 정답과의 절대/상대 오차는 10-9까지 허용한다.
728x90
▶풀이
start와 end를 각각 0과 2c로 두고 풀었다.
end를 2c로 둔 이유는 그냥이다... 죄송합니다.
아무튼 기준으로 잡은 start와 end를 가지고 이분 탐색을 돌렸다.
기준이 되는 오차가 있기에, start와 end의 차이가 오차보다 작아지면 반복문을 종료하였다.
또한 f(mid) 값이 바로 0이 될 수도 있기에 그때도 종료시켜 주었다.
import math
def f(x):
return a * x + b * math.sin(x) - c
a, b, c = map(int, input().split())
check = 10 ** (-9)
s, e = 0, 2*c
while abs(s - e) > check:
mid = (s + e) / 2
if f(mid) == 0:
break
elif f(mid) < 0:
s = mid
else:
e = mid
print(mid)
728x90
'BOJ Code > Gold' 카테고리의 다른 글
[백준/BOJ] gold5 - 1351번 무한 수열 (Python) (0) | 2023.01.10 |
---|---|
[백준/BOJ] gold5 - 23740번 버스 노선 개편하기 (Python) (1) | 2022.12.17 |
[백준/BOJ] gold5 - 11000번 강의실 배정 (Python) (0) | 2022.11.28 |
[백준/BOJ] gold5 - 1038번 감소하는 수 (Python) (0) | 2022.11.28 |
[백준/BOJ] gold3 - 2252번 줄 세우기 (Python) (0) | 2022.07.11 |