인터넷 커뮤티니에서 본 모대학 수학문제를 풀어 보았다.
약간 변경해서, 1^1 + 2^2 + ... + 10000^10000 의 결과 중 끝 50자리를 출력하는 형식으로 바꿔보았다.
from multiprocessing import Pool
import time
MAX_COUNT = 10**50
def mypower(num):
result = 1
for i in range(num):
result = result * num
if result < MAX_COUNT:
continue
result = result % MAX_COUNT
return result
def get_sum(num):
assert num > 0
numbers = [i for i in range(1, num+1)]
assert len(numbers) == num
pool = Pool(processes=4)
return sum(list(pool.map(mypower, numbers))) % MAX_COUNT
if __name__ == '__main__':
start_time = time.time()
print(get_sum(10000))
print(time.time() - start_time)
16026394753230301057223656223127837280816237204500
3.0160417556762695
'Coding > Python 삽질기' 카테고리의 다른 글
[Python/C] 휴대폰 패턴의 가지수 (0) | 2021.02.21 |
---|---|
[Python] 폴더 안의 파일 이름 검색하기 (0) | 2020.10.28 |
[Pygame] Paper Plane Game 만들기 (0) | 2020.08.25 |