entry #1
written by jetison333
guesses
- Camto (by rak1507)
- Camto (by TriMill)
- Palaiologos (by Olivia)
- TriMill (by gollark)
- TriMill (by LyricLy)
- TriMill (by Kit)
- jetison333 (by Palaiologos)
- rak1507 (by razetime)
- rak1507 (by IFcoltransG)
- rak1507 (by ultlang)
- ultlang (by Camto)
comments 0
fibadd.py ASCII text
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | def fib(n): a = 0 b = 1 if n < 0: return -fib(-n) elif n == 0: return 0 elif n == 1: return 1 else: for i in range(1, n): a, b = b, a + b return b def closest_pos(i): upper = 1 while fib(upper) <= i: upper = upper * 2 lower = int(upper/2) while upper-lower != 1: mid = int((lower+upper)/2) if fib(mid) <= i: lower = mid else: upper = mid return (lower, upper) dic = {} def fib_add(i): if not i in dic: dic[i] = fib_add_(i) return dic[i] def fib_add_(i): if i == 1: return [1] if i == 0: return [] smaller, larger = closest_pos(i) smaller = [smaller] + fib_add(i - fib(smaller)) larger = [larger] + [-x for x in fib_add(-(i - fib(larger)))] if len(smaller) < len(larger): return smaller else: return larger |
post a comment