반응형
(과거 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
'프로그래밍 > 알고리즘' 카테고리의 다른 글
[EP 092] T(n) = n의 각 자리수의 제곱의 합. T(T(T(..(n)...))) = n 이 되는 n은 1과 89 (0) | 2020.11.20 |
---|---|
[EP 005] least common multiple for a list of numbers (0) | 2020.11.18 |
[파이썬] 이집트분수 (0) | 2020.04.23 |
[EP 048] ∑ i^i (i=1 ~ 1000) 의 마지막 10자리수 구하기 (0) | 2019.12.24 |
[EP 050] 연속된소수의합이 다시 소수 (0) | 2019.12.18 |