프로그래밍/알고리즘
[EP 080] 100까지의 정수의 제곱근의 자리수 합
daewonyoon
2020. 11. 17. 18:23
반응형
(과거 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