Edit

【pythonでABC159を解説】A - The Number of Even Pairs

問題概要

問題ページ

A - The Number of Even Pairs
A - The Number of Even Pairs

問題ページへ移動する

問題文

\(N+M\) 個のボールがあります。各ボールには整数が \(1\) つ書かれています。
これらのボールに書かれている数について、

  • \(N\) 個のボールに書かれている数は偶数
  • \(M\) 個のボールに書かれている数は奇数

であることがわかっています。

これらの \(N+M\) 個のボールの中から \(2\) つ選んで、書かれた数の和が偶数になる方法の数を求めてください。選ぶ順序は考慮しません。

なお、この方法の数はボールに書かれている整数の実際の値によらないことが示せます。

制約

  • \(0 \leq N,M \leq 100\)
  • \(2 \leq N+M\)
  • 入力はすべて整数である。

問題の考察

ACコード

import sys


def alg_combination(n, r):
    r = min(n - r, r)
    if n < 2:
        return 0
    if r == 0:
        return 1
    else:
        denominator = 1
        for i in range(n, n - r, -1):
            denominator = (denominator * i)
        molecule = 1
        for i in range(1, r + 1):
            molecule = (molecule * i)
        return denominator // molecule


def solve():
    input = sys.stdin.readline
    mod = 10 ** 9 + 7
    n, m = list(map(int, input().rstrip('\n').split()))
    print(alg_combination(n, 2) + alg_combination(m, 2))


if __name__ == '__main__':
    solve()

-Edit
-