https://www.acmicpc.net/problem/15792
문제
두 정수 A와 B를 입력받은 다음, A/B를 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 A와 B가 주어진다. (0 < A, B ≤ 10,000)
출력
첫째 줄에 A/B를 출력한다.
서브태스크
번호배점제한
1 | 1 | 절대/상대 오차는 10-1 까지 허용한다. |
2 | 2 | 절대/상대 오차는 10-2 까지 허용한다. |
3 | 6 | 절대/상대 오차는 10-6 까지 허용한다. |
4 | 9 | 절대/상대 오차는 10-9 까지 허용한다. |
5 | 20 | 절대/상대 오차는 10-20 까지 허용한다. |
6 | 50 | 절대/상대 오차는 10-50 까지 허용한다. |
7 | 100 | 절대/상대 오차는 10-100 까지 허용한다. |
8 | 312 | 절대/상대 오차는 10-312 까지 허용한다. |
9 | 500 | 절대/상대 오차는 10-500 까지 허용한다. |
10 | 1000 | 절대/상대 오차는 10-1000 까지 허용한다. |
풀이
Java에서 double로 나눗셈을 수행해도 자리수는 13?자리까지밖에 표현할 수 없다. 그러면 어떻게 해야할까? -> 초등학교 때 배운 나눗셈 과정을 그대로 코드로 구현하면 된다.
코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
StringBuilder sb = new StringBuilder();
int A = Integer.parseInt(st.nextToken());
int B = Integer.parseInt(st.nextToken());
sb.append(A/B+".");
A = 10 * (A - B *(A/B));
int T = 1500;
while (T-- > 0) {
sb.append(A/B+"");
A = 10 * (A - B *(A/B));
}
System.out.println(sb.toString());
}
}
|
cs |
'PS > Math' 카테고리의 다른 글
백준 25201번: 보드 뒤집기 게임 (Java) (0) | 2022.07.18 |
---|---|
백준 14622번: 소수 게임 (Java) (0) | 2022.07.15 |
백준 9082번: 지뢰찾기 (JAVA) (0) | 2022.06.08 |
백준 3343번: 장미 (JAVA) (0) | 2022.06.02 |
백준 1790번: 수 이어쓰기 2 (JAVA) (0) | 2022.05.31 |