백준 29203번 자릿수 (Python)

Joowan Park·2023년 7월 19일
0

코딩

목록 보기
1/28
import sys
input = sys.stdin.readline
import math

a,b = map(int,input().split())

#효율 좋은 방법을 찾으려면, a**b의 "자릿수"만 계산하는 것이므로, 
로그가 가장 정확합니다.
#ex) 2^4 = 16는 2자리수, 4*(log10(2)) = 4 * 0.30xxx = 1.2xxx...이므로, 
가우스 함수를 취하면 1, 그 값에 1을 더해주면 2자리가 되는 것을 확인 할 수 있습니다.
#ex2) 12^3 = 1728은 4자리수, 3*(log10(12)) = 3*(2*log10(2) + log10(3)) 
=  3*(0.60xxx + 0.47xxx) = 3*(1.07xxx) = 3.2xxxx 이므로, 
가우스함수를 취하면 3이고 이에 1을 더하면 4가 됩니다.# 

N = b * (math.log10(a))
N = int(N) + 1
print(N)

29203번 자릿수라는 문제입니다.
상용로그를 사용하면 풀리는 간단한 문제입니다.

profile
Complex Dynamics에서 탈출한 원숭이

3개의 댓글

comment-user-thumbnail
2023년 7월 19일

이 글은 제게 많은 도움이 되었습니다.

1개의 답글
comment-user-thumbnail
2023년 8월 18일

int를 바로 사용하는 것과 상용로그를 이용해 자릿수를 쉽게 알아낼 수 있다는 점이 새롭네용.

답글 달기