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 = [4, 100, 30, 5, 120 , 34, 88, 90, 320]
for i in challenge:
print(zeck_representation(i))
ZGVmIGZpYl9nZW4obWF4KToKICAgIGEsIGIgPSAxLCAxCiAgICB5aWVsZCAxCiAgICB3aGlsZSBhIDwgbWF4OgogICAgICAgIHlpZWxkIGEKICAgICAgICBhLCBiID0gYSArIGIsIGEKCgpkZWYgemVja19yZXByZXNlbnRhdGlvbihudW0pOgogICAgZ2VuX2FycmF5ID0gbGlzdChmaWJfZ2VuKG51bSkpCiAgICBmaW5kX251bSA9IG51bQogICAgemVja19hcnJheSA9IFtdCiAgICB3aGlsZSBmaW5kX251bSA+IDA6CiAgICAgICAgemVja19hcnJheS5hcHBlbmQoZ2VuX2FycmF5Wy0xXSkKICAgICAgICBmaW5kX251bSAtPSBnZW5fYXJyYXlbLTFdCiAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMCwgbGVuKGdlbl9hcnJheSkgLSAxKToKICAgICAgICAgICAgaWYgZ2VuX2FycmF5W2ldID4gZmluZF9udW06CiAgICAgICAgICAgICAgICBnZW5fYXJyYXkgPSBnZW5fYXJyYXlbOmldCiAgICAgICAgICAgICAgICBicmVhawogICAgb3V0cHV0ID0gc3RyKG51bSkgKyAnID0gJwogICAgemVja19hcnJheSA9ICcgKyAnLmpvaW4oc3RyKGkpIGZvciBpIGluIHplY2tfYXJyYXkpCiAgICBvdXRwdXQgKz0gemVja19hcnJheQogICAgcmV0dXJuIG91dHB1dAoKY2hhbGxlbmdlID0gWzQsIDEwMCwgMzAsIDUsIDEyMCAsIDM0LCA4OCwgOTAsIDMyMF0KZm9yIGkgaW4gY2hhbGxlbmdlOgogICAgcHJpbnQoemVja19yZXByZXNlbnRhdGlvbihpKSkgICAgICAgIA==