import timeit
def div11(n):
acc, sign = 0, 1
while n:
n, r, sign = n // 10, n % 10, -sign
acc += r * sign
acc = abs(acc)
return div11(acc) if acc >= 11 else acc == 0
def is_divisible_by_11(num):
digits = list(str(num))
odd = sum(map(int, digits[0::2]))
even = sum(map(int, digits[1::2]))
diff = abs(odd - even)
if diff < 11:
return diff == 0
else:
return is_divisible_by_11(diff)
def test1():
for n in range(1234):
res = div11(n)
def test2():
for n in range(1234):
res = is_divisible_by_11(n)
def is_divisible_by_11_human_version(x):
return x % 11 == 0
def test3():
for n in range(1234):
res = is_divisible_by_11_human_version(n)
print(timeit.timeit(test1, number=1000))
print(timeit.timeit(test2, number=1000))
print(timeit.timeit(test3, number=1000))
aW1wb3J0IHRpbWVpdAoKCmRlZiBkaXYxMShuKToKICAgIGFjYywgc2lnbiA9IDAsIDEKCiAgICB3aGlsZSBuOgogICAgICAgIG4sIHIsIHNpZ24gPSBuIC8vIDEwLCBuICUgMTAsIC1zaWduCiAgICAgICAgYWNjICs9IHIgKiBzaWduCgogICAgYWNjID0gYWJzKGFjYykKICAgIHJldHVybiBkaXYxMShhY2MpIGlmIGFjYyA+PSAxMSBlbHNlIGFjYyA9PSAwCgoKZGVmIGlzX2RpdmlzaWJsZV9ieV8xMShudW0pOgogICAgZGlnaXRzID0gbGlzdChzdHIobnVtKSkKICAgIG9kZCA9IHN1bShtYXAoaW50LCBkaWdpdHNbMDo6Ml0pKQogICAgZXZlbiA9IHN1bShtYXAoaW50LCBkaWdpdHNbMTo6Ml0pKQogICAgZGlmZiA9IGFicyhvZGQgLSBldmVuKQogICAgaWYgZGlmZiA8IDExOgogICAgICAgIHJldHVybiBkaWZmID09IDAKICAgIGVsc2U6CiAgICAgICAgcmV0dXJuIGlzX2RpdmlzaWJsZV9ieV8xMShkaWZmKQoKZGVmIHRlc3QxKCk6CiAgICBmb3IgbiBpbiByYW5nZSgxMjM0KToKICAgICAgICByZXMgPSBkaXYxMShuKQoKZGVmIHRlc3QyKCk6CiAgICBmb3IgbiBpbiByYW5nZSgxMjM0KToKICAgICAgICByZXMgPSBpc19kaXZpc2libGVfYnlfMTEobikKCmRlZiBpc19kaXZpc2libGVfYnlfMTFfaHVtYW5fdmVyc2lvbih4KToKCXJldHVybiB4ICUgMTEgPT0gMAoKZGVmIHRlc3QzKCk6CiAgICBmb3IgbiBpbiByYW5nZSgxMjM0KToKICAgICAgICByZXMgPSBpc19kaXZpc2libGVfYnlfMTFfaHVtYW5fdmVyc2lvbihuKQoKcHJpbnQodGltZWl0LnRpbWVpdCh0ZXN0MSwgbnVtYmVyPTEwMDApKQpwcmludCh0aW1laXQudGltZWl0KHRlc3QyLCBudW1iZXI9MTAwMCkpCnByaW50KHRpbWVpdC50aW1laXQodGVzdDMsIG51bWJlcj0xMDAwKSk=