結果
| 問題 |
No.3 ビットすごろく
|
| コンテスト | |
| ユーザー |
d_nishiyama85
|
| 提出日時 | 2016-06-12 12:15:42 |
| 言語 | Ruby (3.4.1) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 626 bytes |
| コンパイル時間 | 63 ms |
| コンパイル使用メモリ | 7,424 KB |
| 実行使用メモリ | 12,800 KB |
| 最終ジャッジ日時 | 2024-10-09 13:04:42 |
| 合計ジャッジ時間 | 4,350 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge5 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 32 WA * 1 |
コンパイルメッセージ
Syntax OK
ソースコード
INF = 10000000000
def sum_of_1 n
sum = 0
while n > 0 do
sum += n % 2
n /= 2
end
return sum
end
n = gets.to_i
dist = {}
(n+1).times {|i|
dist[i] = INF
}
queue = Queue.new
queue.push(1)
dist[1] = 1
while true do
if queue.size == 0
break
end
val = queue.pop()
diff = sum_of_1 val
right = val + diff
left = val - diff
if right === n || left === n
puts (dist[val] + 1)
exit
end
if right < n && dist[right] == INF
dist[right] = dist[val] + 1
queue.push(right)
end
if left > 0 && dist[left] == INF
dist[left] = dist[val] + 1
queue.push(left)
end
end
puts(-1)
d_nishiyama85