import threading from functools import lru_cache from sys import setrecursionlimit from threading import Thread ''' Все виды оптимизаций для 16 задания: 1) sys.setrecursionlimit(100_000) 2) lru_cache 3) меморризация некоторых значений 4) threading.stack_size(2 ** 30), потом запустить поток ''' @lru_cache(None) def f(n): if n >= 10_000:return n elif n < 10_000 and n % 4 == 0: return n/4 + f(n/4 + 2) elif n < 10_000 and n % 4 != 0: return 1+ f(n + 2) def main(): print(f(174) - f(3)) setrecursionlimit(100_000) threading.stack_size(2 ** 30) t = Thread(target=main) t.start()