>>162
>>161は多項式にまでするために、部屋をn x (n+1)、宝を2個と特殊化したものです。

#nloc(m,n,k,l)は縦m、横nの部屋で横優先が部屋(k,l)で初めて宝を発見する場合で
#宝が置かれても縦優先に先を越されない部屋の数。
def nloc(m,n,k,l):
q,r = divmod(n*k+l,m)
return (n-q)*(m-k)+q-1-l + ((k-r) if r > k else 0)

#nwin(m,n,c)は部屋が縦m、横n、宝がc個で横優先が勝つ宝の配置の数
def nwin(m,n,c):
return sum(binomial(nloc(m,n,k,l),c-1) for k in range(m) for l in range(n) if k*(n-1)<l*(m-1))

縦優先は縦横を替える。