n 제곱의 자릿수가 n인 경우의 개수는?
짧고 간결한 프로젝트 오일러 문제 하나. 제목에서도 적었듯이 n제곱 해서 나온 숫자의 자릿수가 n인 모든 경우를 묻는 것이다. 다른 문제도 그렇지만, 이 문제는 일일이 제곱을 해가며 풀 수도 있다. 제곱의 결과가 64비트 범위를 넘어설 수도 있으니 이 부분을 해결할 아이디어만 있으면 된다. 하지만 그런 무식한(?) 방법보다는 로그를 활용하는 것이 훨씬 더 좋다. 일단 10진수 D의 자릿수가 n이라는 건 \(n-1 \leq log _{10} D \lt n\) 이라고 쓸 수 있다. 또한, 문제의 특성상 지수의 밑은 오로지 1~9 까지만 가능하다. 다시 말해서 \(1 \leq d \leq 9\) 인 자연수 d에 대해서 \(n-1 \leq log _{10} d ^ {n} \lt n\) 인 자연수 n의 개수를 세..