結果
| 問題 |
No.3245 Payment with 8-rep Currency
|
| コンテスト | |
| ユーザー |
tomerun
|
| 提出日時 | 2025-08-22 23:36:39 |
| 言語 | Crystal (1.14.0) |
| 結果 |
AC
|
| 実行時間 | 1,121 ms / 2,000 ms |
| コード長 | 857 bytes |
| コンパイル時間 | 12,404 ms |
| コンパイル使用メモリ | 310,992 KB |
| 実行使用メモリ | 7,808 KB |
| 最終ジャッジ日時 | 2025-08-22 23:37:53 |
| 合計ジャッジ時間 | 49,823 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 1 |
| other | AC * 30 |
ソースコード
ANS = Array.new(20001) { [-1, -1, -1] }
upper = ANS.size
1.upto(ANS.size // 111) do |c3|
1.upto((ANS.size - c3 * 111) // 11) do |c2|
min = {1, c3 - c2 + 1, c2 - c3 + 1}.max
max = {ANS.size - c3 * 111 - c2 * 11 - 1, c2 + c3 - 1, upper}.min
min.upto(max) do |c1|
sum = c1 + c2 * 11 + c3 * 111
ANS[sum] = [c1, c2, c3, 0]
end
if max == upper
upper = min - 1
end
end
end
read_line.to_i.times do
puts solve().join(" ")
end
def solve
n = read_line.to_i64
if n % 8 != 0
return [-1]
end
n //= 8
if n < ANS.size
return ANS[n.to_i][0] == -1 ? [-1] : ANS[n.to_i]
end
ans = Array.new(4, n // 1234)
left = n - ans[0] - ans[1] * 11 - ans[2] * 111 - ans[3] * 1111
ans[2] += left // 111
left -= left // 111 * 111
ans[1] += left // 11
left -= left // 11 * 11
ans[0] += left
return ans
end
tomerun