結果

問題 No.10 +か×か
ユーザー vjudge1
提出日時 2025-09-05 10:27:22
言語 Crystal
(1.14.0)
結果
RE  
実行時間 -
コード長 567 bytes
コンパイル時間 14,114 ms
コンパイル使用メモリ 311,716 KB
実行使用メモリ 7,716 KB
最終ジャッジ日時 2025-09-05 10:27:37
合計ジャッジ時間 14,571 ms
ジャッジサーバーID
(参考情報)
judge4 / judge1
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
other RE * 12
権限があれば一括ダウンロードができます

ソースコード

diff #

n = gets.not_nil!.to_i
num = gets.not_nil!.to_i64
a = Array(Int32).new(n) { gets.not_nil!.to_i }

dp = Array(Set(Int64)).new(n + 1) { Set(Int64).new }
dp[n] = Set{num}

n.downto(1) do |i|
  x = a[i - 1].to_i64
  dp[i].each do |y|
    dp[i - 1] << (y - x) if y - x >= 0
    dp[i - 1] << (y // x) if y % x == 0
  end
end

raise "Assertion failed: dp[0] should contain 0" unless dp[0].includes?(0)

ans = ""
x = 0_i64
(1..n).each do |i|
  y = a[i - 1].to_i64
  if dp[i].includes?(x + y)
    x += y
    ans += '+'
  else
    x *= y
    ans += '*'
  end
end

puts ans[1..]
0