結果
問題 | No.797 Noelちゃんとピラミッド |
ユーザー | ikd |
提出日時 | 2019-03-15 23:19:40 |
言語 | Nim (2.2.0) |
結果 |
AC
|
実行時間 | 176 ms / 2,000 ms |
コード長 | 886 bytes |
コンパイル時間 | 3,472 ms |
コンパイル使用メモリ | 65,664 KB |
実行使用メモリ | 11,776 KB |
最終ジャッジ日時 | 2024-07-01 21:40:18 |
合計ジャッジ時間 | 10,749 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 60 |
ソースコード
import strutils, sequtils proc modpow(a, x, mo: int64): int64 = if x == 0: return 1 elif x == 1: return a elif x mod 2 == 0: return modpow(a * a mod mo, x div 2, mo) else: return a * modpow(a, x - 1, mo) mod mo proc cmb(n, k: int, fact: seq[int64], mo: int64): int64 = if n < k: return 0 elif k == 0: return 1 elif n == k: return 1 else: result = fact[n] result = result * modpow(fact[k], mo - 2, mo) mod mo result = result * modpow(fact[n - k], mo - 2, mo) mod mo return result proc main() = let n = stdin.readLine.strip.parseInt a = stdin.readLine.strip.split.map(parseInt) mo = 1000000000 + 7 var fact = newSeq[int64](n + 1) fact[0] = 1 for i in 1..n: fact[i] = fact[i - 1] * i mod mo var ans: int64 = 0 for k, it in a: ans = (ans + cmb(n - 1, k, fact, mo) * it) mod mo echo ans main()