結果
問題 |
No.297 カードの数式
|
ユーザー |
|
提出日時 | 2016-01-31 08:57:28 |
言語 | Ruby (3.4.1) |
結果 |
AC
|
実行時間 | 94 ms / 1,000 ms |
コード長 | 990 bytes |
コンパイル時間 | 41 ms |
コンパイル使用メモリ | 7,424 KB |
実行使用メモリ | 12,288 KB |
最終ジャッジ日時 | 2024-12-26 02:25:23 |
合計ジャッジ時間 | 3,149 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 23 |
コンパイルメッセージ
Syntax OK
ソースコード
# 一発完動うれしいぃぃ def calc_max(s) nums = s.scan(/\d/).map(&:to_i).sort plus = s.count("+") minus = s.count("-") ret = 0 minus.times{ ret -= nums.shift } plus.times{ ret += nums.shift } ret += nums.reverse.join.to_i end def calc_min(s) nums = s.scan(/\d/).map(&:to_i).sort plus = s.count("+") minus = s.count("-") ret = 0 if minus > 0 then # "-"があれば、できるだけ大きいマイナスの数値を作る。 t = [] (nums.size - (plus + minus)).times do t << nums.pop end ret -= t.join.to_i minus -= 1 minus.times{ ret -= nums.pop } plus.times{ ret += nums.pop } ret += nums.pop else # "+"しかなければ、大きい数字を低い位に使う。 m = 1 count = 0 while nums.size > 0 do ret += nums.pop * m count += 1 m *= 10 if count % (plus + 1) == 0 end end return ret end gets s = gets max = calc_max(s) min = calc_min(s) puts "#{max} #{min}"