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))