結果
問題 |
No.389 ロジックパズルの組み合わせ
|
ユーザー |
![]() |
提出日時 | 2017-09-05 20:32:28 |
言語 | Ruby (3.4.1) |
結果 |
AC
|
実行時間 | 265 ms / 2,000 ms |
コード長 | 471 bytes |
コンパイル時間 | 106 ms |
コンパイル使用メモリ | 7,424 KB |
実行使用メモリ | 40,064 KB |
最終ジャッジ日時 | 2024-11-06 22:29:41 |
合計ジャッジ時間 | 14,589 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 99 |
コンパイルメッセージ
Syntax OK
ソースコード
mod = 1000000007 n = gets.to_i a = gets.split(" ").map &:to_i if a[0] == 0 p 1 exit end n = n - a.sum + 1 m = a.length if(n < m) puts "NA" exit end f = 1 def pm(a, b, c) ret = 1 while b > 0 ret = ret * a % c if b & 1 > 0 a = a * a % c; b /= 2 end ret end fn = fm = fnm = 1; (1..n).each do |i| f = f * i % mod fn = f if i == n fm = pm(f, mod - 2, mod) if i == m fnm = pm(f, mod - 2, mod) if i == n - m end puts fnm * fn % mod * fm % mod