import time
import random
start = time.time()
def fib_gen(max):
a, b = 1, 1
yield 1
while a < max:
yield a
a, b = a + b, a
def zeck_representation(num):
gen_array = list(fib_gen(num))
find_num = num
zeck_array = []
while find_num > 0:
zeck_array.append(gen_array[-1])
find_num -= gen_array[-1]
for i in range(0, len(gen_array) - 1):
if gen_array[i] > find_num:
gen_array = gen_array[:i]
break
output = str(num) + ' = '
zeck_array = ' + '.join(str(i) for i in zeck_array)
output += zeck_array
return output
challenge = []
[challenge.append(random.randrange(100000000, 100000000000)) for i in range(0, 10)]
[print(zeck_representation(x)) for x in challenge]
print("--- %s seconds ---" % (time.time() - start))
aW1wb3J0IHRpbWUKaW1wb3J0IHJhbmRvbQoKc3RhcnQgPSB0aW1lLnRpbWUoKQoKCmRlZiBmaWJfZ2VuKG1heCk6CiAgICBhLCBiID0gMSwgMQogICAgeWllbGQgMQogICAgd2hpbGUgYSA8IG1heDoKICAgICAgICB5aWVsZCBhCiAgICAgICAgYSwgYiA9IGEgKyBiLCBhCgoKZGVmIHplY2tfcmVwcmVzZW50YXRpb24obnVtKToKICAgIGdlbl9hcnJheSA9IGxpc3QoZmliX2dlbihudW0pKQogICAgZmluZF9udW0gPSBudW0KICAgIHplY2tfYXJyYXkgPSBbXQogICAgd2hpbGUgZmluZF9udW0gPiAwOgogICAgICAgIHplY2tfYXJyYXkuYXBwZW5kKGdlbl9hcnJheVstMV0pCiAgICAgICAgZmluZF9udW0gLT0gZ2VuX2FycmF5Wy0xXQogICAgICAgIGZvciBpIGluIHJhbmdlKDAsIGxlbihnZW5fYXJyYXkpIC0gMSk6CiAgICAgICAgICAgIGlmIGdlbl9hcnJheVtpXSA+IGZpbmRfbnVtOgogICAgICAgICAgICAgICAgZ2VuX2FycmF5ID0gZ2VuX2FycmF5WzppXQogICAgICAgICAgICAgICAgYnJlYWsKICAgIG91dHB1dCA9IHN0cihudW0pICsgJyA9ICcKICAgIHplY2tfYXJyYXkgPSAnICsgJy5qb2luKHN0cihpKSBmb3IgaSBpbiB6ZWNrX2FycmF5KQogICAgb3V0cHV0ICs9IHplY2tfYXJyYXkKICAgIHJldHVybiBvdXRwdXQKCmNoYWxsZW5nZSA9IFtdCltjaGFsbGVuZ2UuYXBwZW5kKHJhbmRvbS5yYW5kcmFuZ2UoMTAwMDAwMDAwLCAxMDAwMDAwMDAwMDApKSBmb3IgaSBpbiByYW5nZSgwLCAxMCldCltwcmludCh6ZWNrX3JlcHJlc2VudGF0aW9uKHgpKSBmb3IgeCBpbiBjaGFsbGVuZ2VdCgpwcmludCgiLS0tICVzIHNlY29uZHMgLS0tIiAlICh0aW1lLnRpbWUoKSAtIHN0YXJ0KSk=