1. 문제 난이도
2. 문제설명
a,b를 입력받아 a의 b제곱의 자릿수를 출력하는 문제이다.
<INPUT>
공백으로 구분된 a, b
1 $\leq$ a $\leq$10000
1$\leq$ b $\leq$10000000
<OUTPUT>
a의 b제곱의 자릿수
3.아이디어
고등학교 수학시간에 배운 것처럼
로그를 이용하면 쉽게 큰 수의 자릿수를 알 수 있다.
로그의 성질인
$ log\ a^{b} = b \log a $
를 사용하면 지수를 내릴 수 있어 큰 수를 편하게 줄일 수 있다.
예전에 배웠던 것처럼
b log a
의 값을 내림을 하고 1을 더하면 자릿수가 나온다.
4. 구현
코드는 매우 짧다.
math를 import해서 floor와 log를 사용했다.
math.floor()
내림 함수
math.log()
로그 함수
밑이 e이다.
로그 함수는 밑이 e이기 때문에 로그의 밑변한 공식을 사용해밑이 10인 로그처럼 사용할 수 있게 바꿨다.
import math
a,b=map(int, input().split())
print(1+math.floor(b*math.log(a)/math.log(10)))
댓글, 질문, 오류지적 모두 감사합니다
'프로그래밍 > 백준' 카테고리의 다른 글
백준 25426번 - 일차함수들 (0) | 2024.02.26 |
---|---|
백준 1500번 - 최대 곱 (0) | 2024.02.23 |
백준 12931번 - 두 배 더하기 (0) | 2024.02.21 |
백준 1793번 - 타일링 (0) | 2024.02.20 |
백준 11727번 - 2xn 타일링 2 (0) | 2024.02.14 |