結果
問題 | No.741 AscNumber(Easy) |
ユーザー |
|
提出日時 | 2021-12-12 21:52:15 |
言語 | Python3 (3.13.1 + numpy 2.2.1 + scipy 1.14.1) |
結果 |
AC
|
実行時間 | 536 ms / 2,000 ms |
コード長 | 1,292 bytes |
コンパイル時間 | 83 ms |
コンパイル使用メモリ | 12,544 KB |
実行使用メモリ | 89,088 KB |
最終ジャッジ日時 | 2024-07-21 10:05:04 |
合計ジャッジ時間 | 9,852 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 55 |
ソースコード
class Combinatorics:def __init__(self, n: int, mod: int) -> None:self.n = nself.mod = modself.fa = [1] * (self.n + 1)self.fi = [1] * (self.n + 1)for i in range(1, self.n + 1):self.fa[i] = self.fa[i - 1] * i % self.modself.fi[-1] = pow(self.fa[-1], self.mod - 2, self.mod)for i in range(self.n, 0, -1):self.fi[i - 1] = self.fi[i] * i % self.moddef comb(self, n: int, r: int) -> int:if n < r:return 0if n < 0 or r < 0:return 0return self.fa[n] * self.fi[r] % self.mod * self.fi[n - r] % self.moddef perm(self, n: int, r: int) -> int:if n < r:return 0if n < 0 or r < 0:return 0return self.fa[n] * self.fi[n - r] % self.moddef combr(self, n: int, r: int) -> int:if n == r == 0:return 1return self.comb(n + r - 1, r)"""非負整数のうち、10進数表示をしたときに桁が昇順に並んでいるものをAscNumberと定義します。例えば0, 1, 123, 12234, 334はAscNumberです。はAscNumberではありません。正の整数が与えられるので、10^N未満のAscNumberがいくつあるかを求めてください。ただし答えは大きくなるので、10 ** 9 + 7で割った余りを出力してください。"""n = int(input())C = Combinatorics(n + 9, 10**9 + 7)print(C.comb(n + 9, 9))