1. 문제 풀이
실수 a와 정수 b가 주어졌을 때, a^b를 구해 출력하면 되는 오차 없이 정확한 계산을 구해야 합니다. 컴퓨터 언어에서 제공하는 실수 자료형 float, double은 연산을 거듭할수록 오차가 발생하는 문제가 있습니다. C++로 풀이할 경우 입력을 문자열로 받아 처리하는 작업을 수행해야 하는데 이는 매우 복잡하고 어려워집니다. 그렇다고 해서 실수 연산 오차를 줄이기 위한 라이브러리가 C++ 에는 없습니다. 따라서 Java의 BigDecimal 객체를 사용하면 이 문제를 정말 쉽게 풀이할 수 있습니다. BigDecimal은 실수 연산을 오차 없이 계산할 수 있습니다. 다른 예도 있는데 Java에는 인자로 받은 숫자가 소수인지 판별하는 함수를 제공하는데 밀러-라빈 소수 판별법과 같은 빠른 속도로 구할 수 있는 알고리즘으로 구현되어 있어 빠르게 소수를 판별해 볼 수 있습니다.
2. 코드
import java.io.*;
import java.math.BigDecimal;
import java.util.StringTokenizer;
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());
BigDecimal a = new BigDecimal(st.nextToken());
int b = Integer.parseInt(st.nextToken());
System.out.println(a.pow(b).toPlainString());
}
}
3. 제출 결과
'알고리즘 > 백준' 카테고리의 다른 글
백준 1949번 우수 마을[C++] (0) | 2025.02.10 |
---|---|
백준 2608번 로마 숫자[C++] (0) | 2025.02.07 |
백준 20055번 컨베이어 벨트 위의 로봇[C++] (0) | 2025.02.03 |
백준 17141번 연구소 2[C++] (0) | 2025.02.02 |
백준 16940번 BFS 스페셜 저지[C++] (0) | 2025.02.01 |