結果
問題 | No.1550 nullくんの町清掃 / null's Town Cleaning |
ユーザー |
|
提出日時 | 2021-06-22 07:49:25 |
言語 | Crystal (1.14.0) |
結果 |
AC
|
実行時間 | 3 ms / 2,000 ms |
コード長 | 1,308 bytes |
コンパイル時間 | 12,142 ms |
コンパイル使用メモリ | 298,292 KB |
実行使用メモリ | 6,944 KB |
最終ジャッジ日時 | 2024-06-23 04:35:39 |
合計ジャッジ時間 | 12,694 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 6 |
ソースコード
# require "crystal/mod_int"# modintstruct ModIntMAX = 100_000MOD = 10_i64 ** 9 + 7# MOD = 998_244_353_i64class_getter f = Array(ModInt).new(MAX)getter v : Int64def self.f(n)f << 1.to_m if f.empty?f.size.upto(n) do |i|f << f.last * iendf[n]enddef self.p(n, k)return ModInt.zero if n < kn.f // (n - k).fenddef self.c(n, k)return ModInt.zero if n < kp(n, k) // k.fenddef self.h(n, k)c(n + k - 1, k)enddef initialize(v)@v = v.to_i64 % MODend{% for op in %w(+ - *) %}def {{op.id}}(b)ModInt.new(v {{op.id}} (b.to_i64 % MOD))end{% end %}def **(b)a = selfans = 1.to_mwhile b > 0ans *= a if b.odd?b //= 2a *= aendreturn ansenddef invself ** (MOD - 2)enddef //(b)self * b.to_m.invenddef self.zeronew(0)enddef ==(b)v == b.to_i64enddef to_mselfenddelegate to_i64, to: vdelegate to_s, to: vdelegate inspect, to: vendstruct Intdef to_mModInt.new(to_i64)enddef fModInt.f(self)enddef p(k)ModInt.p(self, k)enddef c(k)ModInt.c(self, k)enddef h(k)ModInt.h(self, k)endendn = gets.to_s.to_i64pp n.to_m