문제:

실수 a와 정수 b가 주어졌을 때, a의 b제곱을 정확하게 계산하는 프로그램을 작성하시오.

입력:

첫째 줄에 a와 b가 주어진다. (0 < a < 100, 1 ≤ b ≤ 100) a는 최대 소수점 9자리이며, 소수가 0으로 끝나는 경우는 없다. a는 항상 소수점이 포함되어 있다.

출력:

첫째 줄에 a의 b제곱을 출력한다.

풀이방법:

python은 부동 소수점 문제가 있기 때문에 특히 소숫점 계산이 더 어렵다는 문제점이 있다. 따라서 이러한 문제점을 해결하기 위해서 python에서는 Decimal이라는 자료구조를 제공한다. 소수를 스트링 형태로 만든 뒤에 이를 지수, 가수 부분으로 나누어서 연산을 하는 방법이다.

1
2
3
4
5
6
from decimal import Decimal, getcontext
 
a, b = map(str,input().split())
 
getcontext().prec = 1101
print("{0:f}".format(Decimal(a)**int(b)))
cs

문제링크:

https://www.acmicpc.net/problem/10827

 

10827번: a^b

첫째 줄에 a와 b가 주어진다. (0 < a < 100, 1 ≤ b ≤ 100) a는 최대 소수점 9자리이며, 소수가 0으로 끝나는 경우는 없다. a는 항상 소수점이 포함되어 있다.

www.acmicpc.net

 

'Algorithm > Python' 카테고리의 다른 글

[BOJ]2641. 다각형그리기  (0) 2022.02.11
[BOJ]2660. 회장뽑기  (0) 2022.02.10
[BOJ]2631. 줄세우기  (0) 2022.02.08
[BOJ] 9576. 책 나눠주기  (0) 2022.02.07
[BOJ]21610. 마법사 상어와 비바라기  (0) 2021.11.05

+ Recent posts