Saturday, June 13, 2015

Project Euler #63 - powerful digit counts

프로젝트 오일러 63번 - 제곱 자리수 세기
7^5은 5자리, 8^9은 9자리처럼 어떤 수의 n제곱이 n자리가 되는 경우는 총 몇 가지인가?

1^1, 2^1, ... 9^1
1^2 안 되고 ... 4^2 되고.. 9^2까지 모두 되고
4^3 안 되고, 5^3 되고.. 9^3까지 모두 되고
5^4 안 되고...

두 가지 성질..
1. k^n이 되면 k+1, k+2, ... 9까지 다 된다
2. k^n이 되었으면, k^(n+1)부터 체크하면 된다. (n+1)을 위해 1, 2, ... (k-1)은 체크할 필요 없다.

k, n, rs = 1, 1, 0
while k < 10:
    if len(str(k**n)) == n: rs += 10-k; n += 1
    else: k += 1
print rs

실행시간은.. 순식간.

No comments: