프로젝트 오일러 016
2의 1000승의 각 자리수의 합을 구하기
문제
큰 수의 곱셈 ∙ 거듭제곱
이번 문제 역시 큰 수와 관련된 내용입니다. 2의 10승이 1000쯤 되니, 2의 1,000승은 약 300자리 자연수가 됩니다. 큰 수의 곱셈에서는 파이썬에서 파이썬이 제공하는 것보다 빠른 연산을 구현하기는 어렵습니다.
print(sum(map(int, str(2**1000))))
혹은 13번 문제에서 사용한 s_add()
를 사용해서 "1"을 천 번 두 배 하는 방법도 있죠.
s = "1"
for _ in range(1000):
s = s_add(s, s)
print(sum(map(int, s)))
큰 수의 곱셈을 우리가 손으로 곱셈을 계산하는 방법을 그대로 적용해서 충분히 구현할 수 있습니다. 곱셈을 구현했다면 거듭제곱도 구현이 가능하겠죠. 어쨌든 그 부분은 다음 기회로 넘기고 오늘은 여기까지.