Skip to content

Conversation

@oncsr
Copy link
Contributor

@oncsr oncsr commented Mar 6, 2025

🧷 문제 링크

https://www.acmicpc.net/problem/18117

🧭 풀이 시간

35분

👀 체감 난이도

✏️ 문제 설명

  • 정수 $a,b,i (1 \le a,b,i \le 10^{18})$$n (1 \le n \le 100)$이 주어진다.
  • $\dfrac{a}{b}$ 의 소수점 아래 $i$번째 자리부터 $i+n-1$번째 자리까지 출력해보자.

🔍 풀이 방법

[사용한 알고리즘]

  • 분할 정복을 이용한 거듭제곱

  • 나눗셈 과정을 손으로 직접 해보면 금방 알 수 있다.
  • 소수점 아래 $k$번째 자리는, $\lfloor \dfrac{((a \times 10^{k-1} \mod b) \times 10 )}{b} \rfloor$이다.
  • $k \le 10^{18}$이기 때문에 분할 정복을 이용한 거듭제곱으로 빠르게 계산해줘야 한다.

⏳ 회고

계산 과정에서 분자 부분이 $10^{19}$까지 올라갈 수 있는데, java엔 unsigned 자료형이 없어서 어쩔 수 없이 BigInteger를 썼다..

@oncsr oncsr added the success 👍 해설을 보지 않고 풀었을 때 label Mar 6, 2025
@ShinHeeEul ShinHeeEul merged commit 28ec8a5 into main Mar 6, 2025
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

success 👍 해설을 보지 않고 풀었을 때

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants