뻠삥

문제 : https://www.acmicpc.net/problem/15792

 

15792번: A/B - 2

첫째 줄에 A와 B가 주어진다. (0 < A, B ≤ 10,000)

www.acmicpc.net

나누기 알고리즘입니다.

문제에서 주어진 모든 조건을 만족하기 위해서는 소수점 1000자리까지 나타낼 수 있어야합니다.

자바의 경우 BigDecimal을 사용했으며, 파이썬의 경우 나누기 과정을 손으로 써내려가듯이 구현했습니다.

 

문제 풀이는 아래와 같습니다.

 

1. Java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.math.BigDecimal;
 
public class Main {
    public static void main(String[] args) throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        
        String[] nums = br.readLine().split(" "-1);
        System.out.println(new BigDecimal(nums[0]).divide(new BigDecimal(nums[1]), 1000, BigDecimal.ROUND_HALF_UP));
        
        br.close();
    }
}
 
cs

 

2. Python3

1
2
3
4
5
6
7
8
9
10
11
12
if __name__ == '__main__':
    num1, num2 = map(int, input().split(' '-1))
    result = str(num1 // num2) + '.'
    remain = num1 % num2
    for i in range(01000):
        remain *= 10
        result += str(remain // num2)
        if remain == 0:
            break
        remain %= num2
    
    print(result)
cs