(BOJ) 1312 소수

1312 소수

  • 분류 : 수학

문제

피제수(분자) A와 제수(분모) B가 있다.

두 수를 나누었을 때, 소숫점 아래 N번째 자리수를 구하려고 한다.

예를 들어, A=3, B=4, N=1이라면, A÷B=0.75 이므로 출력 값은 7이 된다.

입력

첫 번째 줄에 A와 B(1 ≤ A, B ≤ 100,000), N(1 ≤ N ≤ 1,000,000)이 공백을 경계로 주어진다.

출력

A÷B를 했을 때, 소숫점 아래 N번째 수를 출력한다.

예제 입력 1

1
25 7 5

예제 출력 1

1
2

Solution

Expander
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import java.util.*

private var A: Double = 0.0
private var B: Double = 0.0
private var N: Int = 0

fun main() {
input()
solve()
}

private fun input() = with(Scanner(System.`in`)) {
A = nextDouble() // 피제수(분자) A
B = nextDouble() // 제수(분모) B
N = nextInt() // 소숫점 아래 N번째 자리수
}

private fun solve() {
repeat(N) { A = A.rem(B) * 10 }
println((A / B).toInt())
}

Point of Thinking

  • 소숫점 아래 자릿수 N이 1백만까지 입력되므로, 일반적인 나누기 연산으로는 답이 나오지않는다.
  • N 만큼 반복적으로 A를 B로 나누고 10을 곱하여 자릿수를 계속 올려가면서 연산하면 Accepted.