python: вычисление биномиального коэффициента (одностроковый код ограниченного размера)

решаю тут одну задачка:

дописать код

comb=lambda n,k:

для вычисления биномиального коэффициента, чтобы код не превышал 44 символа!

используя особенности разложения (1+x)^n в степенной ряд можно получить вот такую формулу:

comb=lambda n,k:((2**n+1)**n>>n*k)%2**n

что составляет 39 символов, но не корректно обрабатывает ситуацию n=k=0, C(0, 0)=1, а формула даёт 0

таким образом есть 5 символов, чтобы из n,k получить 1 для случая n=k=0 и 0 для все остальных

можно конечно сделать так:

+(n==k==0)

но это целых 10 байт :(

можно ли как то это все свести к 5 байтам или придётся основную формулу переделывать? :(


Ответы (0 шт):