結果
問題 |
No.3 ビットすごろく
|
ユーザー |
|
提出日時 | 2025-05-18 20:52:01 |
言語 | Java (openjdk 23) |
結果 |
AC
|
実行時間 | 135 ms / 5,000 ms |
コード長 | 614 bytes |
コンパイル時間 | 3,039 ms |
コンパイル使用メモリ | 80,712 KB |
実行使用メモリ | 41,856 KB |
最終ジャッジ日時 | 2025-05-18 20:52:10 |
合計ジャッジ時間 | 8,644 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 33 |
ソースコード
import java.util.*; class Main{ public static void main(String[] args){ Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int[] p = new int[n]; Queue<Integer> que = new ArrayDeque<>(); que.add(0); Integer a; p[0] = 1; while((a = que.poll()) != null && p[n-1] == 0){ int b = pop(a+1); if(a + b < n && p[a+b] == 0){ p[a+b] = p[a] + 1; que.add(a+b); } if(a >=b && p[a-b]==0){ p[a-b] = p[a] + 1; que.add(a-b); } } System.out.println(p[n-1] == 0 ? -1 : p[n-1]); } static int pop(int n){ int r = 0; while(n!=0){ r+=n%2; n/=2; } return r; } }