백준문제풀이
백준 문제 10827번 a^b 문제풀이 python
노가다 김씨
2022. 4. 3. 23:20
https://www.acmicpc.net/problem/10827
10827번: a^b
첫째 줄에 a와 b가 주어진다. (0 < a < 100, 1 ≤ b ≤ 100) a는 최대 소수점 9자리이며, 소수가 0으로 끝나는 경우는 없다. a는 항상 소수점이 포함되어 있다.
www.acmicpc.net
문제해석
실수형으로 a^b를 할 경우 오차가 생기기 마련인데 그것을 정확하게 출력하는게 문제이다.
이 문제를 나는 정수로 보고 풀었다.
예를들어
3.141592 3 가 입력으로 주어 졌을경우
3141592^3를 구한다.
3141592^3=31006257328285746688
소수점을 삽입해야하는 곳을 찾는다.
여기서 소수점의 위치는 31뒤에 찍어야하므로 답은 31.006257328285746688이 된다.
소수를 정수로 보고 계산을 하므로 큰수의 연산이 필요한데 이건 파이썬으로 푸는것이 더 편할것 같아서 파이썬을 사용했다.
코드
l=input()
l=l.split()
n=len(l[0])-1-l[0].find('.')
x=l[0].split('.')
x=int(x[0]+x[1])
y=int(l[1])
z=bin(y)[2:]
sum=x
for i in range(1,len(z)):
sum=sum*sum
if z[i]=='1':
sum=sum*x
sum=str(sum)
while len(sum)<n*y+1:
sum='0'+sum
front=sum[:len(sum)-n*y]
back=sum[len(sum)-n*y:]
print(front+'.'+back)