Edit

【pythonでABC209を解説】C - Not Equal

問題概要

問題ページ

問題文

長さ \(N\) の整数列 \(C\) が与えられます。以下の条件を全て満たす長さ \(N\) の整数列 \(A\) の個数を求めてください。

  • \(1 \leq A_i \leq C_i\, (1 \leq i \leq N)\)
  • \(A_i \neq A_j\, (1 \leq i < j \leq N)\)

ただし、答えは非常に大きくなる可能性があるので、\((10^9+7)\) で割った余りを出力してください。

制約

  • \(1 \leq N \leq 2 \times 10^5\)
  • \(1 \leq C_i \leq 10^9\)
  • 入力は全て整数

問題の考察

ACコード

import sys


def solve():
    input = sys.stdin.readline
    mod = 10 ** 9 + 7
    n = int(input().rstrip('\n'))
    c = list(map(int, input().rstrip('\n').split()))
    c.sort()
    total = 1
    for i, v in enumerate(c):
        total *= (v - i)
        total %= mod
    print(total)


if __name__ == '__main__':
    solve()

プログラミング

-Edit