結果
問題 | No.1330 Multiply or Divide |
ユーザー |
![]() |
提出日時 | 2021-01-09 15:50:26 |
言語 | Crystal (1.14.0) |
結果 |
AC
|
実行時間 | 782 ms / 2,000 ms |
コード長 | 648 bytes |
コンパイル時間 | 11,241 ms |
コンパイル使用メモリ | 296,156 KB |
実行使用メモリ | 31,680 KB |
最終ジャッジ日時 | 2024-06-30 21:52:53 |
合計ジャッジ時間 | 20,893 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 46 |
ソースコード
lib Cfun strtoll(s : UInt8*, p : UInt8**, b : Int32) : Int64endclass Stringdef to_i64C.strtoll(self, nil, 10)endendn, m, k = read_line.split.map(&.to_i64)a = read_line.split.map(&.to_i64)b, cnt = a.map { |i|c = 1while i % k == 0i //= kc += 1end[i, c]}.transposeif a.max > mputs 1exitendif b.max == 1puts -1exitendgoal = m // a.max + 1MAX_X = 500dp = [0] * MAX_Xdp[0] = 1(0...MAX_X).each do |x|(0...n).each do |i|if dp[x] < goal && x + cnt[i] < MAX_Xdp[x + cnt[i]] = {dp[x + cnt[i]], dp[x] * b[i]}.maxendendendputs dp.index { |i| i >= goal }.not_nil! + 1