結果
| 問題 | No.3 ビットすごろく |
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2026-06-17 15:59:59 |
| 言語 | Java (openjdk 25.0.2) |
| 結果 |
AC
|
| 実行時間 | 43 ms / 5,000 ms |
| コード長 | 1,275 bytes |
| 記録 | |
| コンパイル時間 | 3,415 ms |
| コンパイル使用メモリ | 84,304 KB |
| 実行使用メモリ | 39,408 KB |
| 最終ジャッジ日時 | 2026-06-17 16:00:07 |
| 合計ジャッジ時間 | 5,937 ms |
|
ジャッジサーバーID (参考情報) |
judge1_0 / judge2_1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 33 |
ソースコード
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayDeque;
import java.util.ArrayList;
import java.util.Queue;
public class No3_2 {
public static void main(String[] args) throws NumberFormatException, IOException {
int N = Integer.parseInt(readStr()[0]);
int[] mass = new int[N+1];
mass[1] = 1;
int i = 1,bit = 0;
Queue<Integer> que = new ArrayDeque<>();
que.add(1);
while(!que.isEmpty()) {
i= que.poll();
bit = Integer.bitCount(i);
if(mass[i] == 0) {
continue;
}
if(mass[i-bit] > mass[i]+ 1 || mass[i-bit]== 0 ) {
mass[i-bit] = mass[i] + 1;
que.add(i-bit);
}
if(i+bit > N) {
continue;
}else if(mass[i+bit] > mass[i] + 1 || mass[i+bit] == 0) {
mass[i+bit]= mass[i] + 1;
que.add(i+bit);
}
}
if(mass[N] == 0) {
mass[N] = -1;
}
System.out.println(mass[N]);
}
public static String[] readStr() throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
ArrayList<String> list = new ArrayList<>();
do {
list.add(br.readLine());
}while(br.ready());
br.close();
String[] text = new String[list.size()];
list.toArray(text);
return text;
}
}