えー、入力が
n, k
である場合、n!/(k!(n-k)!)
を求めればいいらしい。組み合わせのnCr。では。I=input() f=lambda x:x and x*f(x-1)or 1 print f(I[0])/f(I[1])/f(I[0]-I[1])Pascal's Triangleで使った階乗がそのまま使えたので使ってみる。で、74byte。pythonのトップは39byte。オオゥ。どうにか弄ろう。
n,k=input() f=lambda x:x and x*f(x-1)or 1 print f(n)/f(k)/f(n-k)リストにする必要はまるでなかったので修正。が、まだ64byte。単純なだけに問題が浮き彫りになる。nCrの計算をもっとシンプルに出来る方法があるのか、あるいは階乗の計算の方か。
例えば、再帰を使わずに。
n,k=input() f=lambda a:a and reduce(lambda x,y:x*y,range(1,a+1))or 1 print f(n)/f(k)/f(n-k)これだと92byte。長すぎる。
Pascal's Triangleと併せて考え直した方が良さそう。