mirror of
https://github.com/Fare-spec/cours.git
synced 2025-12-08 03:00:37 +00:00
just moved some files
This commit is contained in:
48
university/exercises/fibibi.py
Normal file
48
university/exercises/fibibi.py
Normal file
@@ -0,0 +1,48 @@
|
||||
def fibo(n: int, mem=None) -> int:
|
||||
if mem is None:
|
||||
mem = {}
|
||||
if n <= 1:
|
||||
return n
|
||||
if n in mem:
|
||||
return mem[n]
|
||||
mem[n] = fibo(n - 1, mem) + fibo(n - 2, mem)
|
||||
return mem[n]
|
||||
|
||||
|
||||
memo = {1: [1]}
|
||||
|
||||
|
||||
def syracuse(n):
|
||||
if n in memo:
|
||||
return memo[n]
|
||||
if n % 2 == 0:
|
||||
seq = [n] + syracuse(n // 2)
|
||||
else:
|
||||
seq = [n] + syracuse(3 * n + 1)
|
||||
memo[n] = seq
|
||||
return seq
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
import time
|
||||
|
||||
n = int(input("n: "))
|
||||
start = time.time()
|
||||
print(fibo(n))
|
||||
print(len(str((fibo(n)))))
|
||||
end = time.time()
|
||||
print(end - start)
|
||||
|
||||
|
||||
def fibo_fast(n: int) -> int:
|
||||
def _fd(k: int) -> tuple[int, int]:
|
||||
if k == 0:
|
||||
return (0, 1)
|
||||
a, b = _fd(k // 2)
|
||||
c = a * ((b << 1) - a)
|
||||
d = a * a + b * b
|
||||
if k & 1:
|
||||
return (d, c + d)
|
||||
return (c, d)
|
||||
|
||||
return _fd(n)[0]
|
||||
Reference in New Issue
Block a user