JOI2006模擬試験2 問題5@Python(24)

多倍長問題で非常に腹が立ったので腹いせにPythonで組む。

#!/usr/bin/python
# -*- coding: utf-8 -*-

import sys
def combination(all, select):
    if(select < 0 or select > all):
        return 0

    ret = 1
    for i in xrange(select):
        ret=ret*(all-i)/(1+i)

    return ret

(nstr, mstr, rstr) = tuple(sys.stdin.readline().split(' '))
n = int(nstr)
m = int(mstr)
r = int(rstr)
realr = r - n * m
separators = n - 1
patterns = combination(realr + separators, separators)
print "%d" % patterns

さっきのコードに比べてやけに短いので余計に腹が立った。