[13705] Ax+Bsin(x)=C

2022. 2. 14. 09:26·PS | CP/Baekjoon OJ

일단 태그에서부터 임의 정밀도/큰 수 연산이 붙어 있으니 고생 좀 해야 하겠다... 만! 이런 끔찍한 문제들은 보통 python의 Decimal로 해결한다.

​

c/cpp로 구현하는 것도 불가능한 건 아니고 실제로 적잖은 AC가 있긴 하다... 언제 따로 cpp bigint를 따로 구현해봐야겠다.

​

꽤 높은 수준의 정밀도를 요구하는 문제기 때문에 기본적으로 지원하는 sin함수를 써서는 안 된다. 테일러 전개를 활용해 새로 함수를 짜야 한다. 파이 값도 중요해서 인터넷에서 몇백자리 긁어다 Decimal에 때려박았다.

$Ax+B\sin x\ (A \geq B)$는 미분해서 보면 전체 구간에서 증가함을 알 수 있으므로 이분 탐색을 쓸 수 있다. Decimal로 잡고 st en mid 돌려가며 구했다.

​

이 정도 했다면 중간에 실수로 Decimal의 보호를 받지 못한 부동소수점 오차를 출력까지 들고 가는 일이 없다는 보장 하에 AC를 받을 것이다.

 

 

13705번: Ax+Bsin(x)=C

첫째 줄에 정수 A, B, C가 주어진다. (0 < B ≤ A ≤ 100,000, 0 < C ≤ 100,000)

www.acmicpc.net

'PS | CP/Baekjoon OJ' 카테고리의 다른 글
  • [16282] Black Chain
  • [10436] 무한 유리수 트리
  • [19577] 수학은 재밌어
  • [1007] 벡터 매칭
SafeSpot
SafeSpot
  • SafeSpot
    SafeSpot::SafePost
    SafeSpot
    contact : me@safespot.dev
    BOJ | solved.ac | CF | Git
  • 전체
    오늘
    어제
    • 분류 전체보기 (60)
      • 아무거나 (11)
      • 수학 (2)
      • 프로그래밍 (1)
      • PS | CP (45)
        • CF | Atcoder (10)
        • Baekjoon OJ (35)
      • 소프트웨어 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 인기 글

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
SafeSpot
[13705] Ax+Bsin(x)=C
상단으로

티스토리툴바