문제
피제수(분자) 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번째 수를 출력한다.
출처
https://www.acmicpc.net/problem/1312
문제풀이
이 문제에 경우에는 나도 구글링해서 풀었던 기억이 있다.
단순 파이썬을 이용해 문자열 변환 할 생각은 버리는 것이 좋다.
파이썬은 소수점 15자리까지만 표시가 된다.
그렇기에 수학적원리로 접근해서 풀어야하는데
우선 25 / 7를 소수로 표현하자면
3.571428571428571 가 나온다.
우리가 원하는 답은 소수 5번째 자리인 2이다.
소수를 한꺼번에 구하는것이 아닌
우리가 초등학교때 했던 나눗셈을 했던 식을 사용하여 풀면 답이 나온다.
예제 1로 문제를 풀어보자면
for case1.
25 % 7 = 4 * 10 = 40
40 // 7 = 5(result)
for case2.
40 % 7 = 5 * 10 = 50
50 // 7 = 7(result)
for case3.
50 % 7 = 1 * 10 = 10
10 // 7 = 1(result)
for case4.
10 % 7 = 3 * 10 = 30
30 // 7 = 4(result)
for case5.
30 % 7 = 2 * 10 = 20
20 // 7 = 2(result)
-> end 정답 : 2
내 소스코드
1
2
3
4
5
6
7
|
A,B,N = map(int, input().split())
for i in range(N) :
A = (A%B)*10
result = A//B
print(result)
|
cs |
'BaekJoon' 카테고리의 다른 글
[백준 알고리즘] 2609번 : 최대공약수와 최소공배수 (C++) 문제 풀이 (0) | 2021.08.30 |
---|---|
[백준 알고리즘] 1427번 : 소트인사이드 (JAVA) 문제 풀이 (0) | 2021.08.25 |
[백준 알고리즘] 1037번 : 약수 (Python) 문제 풀이 (0) | 2021.08.25 |
[백준 알고리즘] 11653번 : 소인수분해 (JAVA) 문제 풀이 (0) | 2021.08.25 |
[백준 알고리즘] 10828번 : 스택 (Python) 문제 풀이 (0) | 2021.08.25 |