본문 바로가기

프로그래밍/알고리즘

[EP 080] 100까지의 정수의 제곱근의 자리수 합

반응형

(과거 2007년에 썼던 포스팅 재활용입니다. 접근제한된 블로그에 잠자고 있어서 꺼내옴.)

문제는 이렇다. :
100까지의 정수의 제곱근 중에 무리수인 것의 십진수 소수표현을 구해서, 그 소수표현에 나오는 100개의 자릿수를 더한 값을 모두 더한 값은?

별 생각없이 그냥  순리대로 짜면 구해진다. 무리수가 아닌 건 빼라는 게 함정이었을지도... (실제로 이 조건을 안 써서 한 서너번 재시도. 도대체 틀릴 구석이 없는데...)

# http://projecteuler.net/index.php?section=problems&id=80

def GetRoot(n):
    ret = 0
    nn = n
    digit_sum = 0
    for i in range(100):
        d = 0
        while ret*ret <= nn:
            ret += 1
            d += 1
        d -= 1
        ret -= 1
        digit_sum += d
        ret *= 10
        nn *= 100
#   return ret/10#, digit_sum
    return digit_sum

total = 0
for i in range(1, 100):
    if i == 1 or i == 4 or i == 9 or i == 16 or i == 25 or i == 36 or i == 49 or i == 64 or i == 81:
        continue
    total += GetRoot(i)
print( total )
728x90