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 байтам или придётся основную формулу переделывать? :(