結果
| 問題 |
No.3 ビットすごろく
|
| コンテスト | |
| ユーザー |
hj5ln8kbDM8t2fF
|
| 提出日時 | 2019-06-30 11:26:10 |
| 言語 | Java (openjdk 23) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 2,296 bytes |
| コンパイル時間 | 2,268 ms |
| コンパイル使用メモリ | 76,488 KB |
| 実行使用メモリ | 41,620 KB |
| 最終ジャッジ日時 | 2024-07-05 18:53:10 |
| 合計ジャッジ時間 | 6,658 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge5 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 16 WA * 17 |
ソースコード
//★★★No.3 ビットすごろく★★★
//v2
import java.util.*;
//数字の二進数の1の数を求めるクラス
//intは整数型なので、小数点以下は切り捨てられる
class Kazu{
int ichi = 0;
public int program1(int num){
do{
//numを2で割り切れなかった場合ichiの数を増やしていく
if(num%2==1){
ichi = ichi+1;
}
//numに2で割った後の数を入れる
num = num/2;
}while(num>0);
return ichi;
}
}
class Tasu{
int t_kekka = 0;
public int program2(int num,int ichi){
t_kekka = num + ichi;
return t_kekka;
}
}
class Hiku{
int h_kekka = 0;
public int program3(int num,int ichi){
h_kekka = num - ichi;
return h_kekka;
}
}
public class Main{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
int ichi = 0; //今いる位置の1の数
int ichi_p = 0; //今いる位置の1回前にいた位置の1の数
// int t_kekka = 1;
int position = 1; //今いる位置
int position_p = 0; //今いる位置の一回前にいた位置
// int h_kekka = 0;
int flag = 0;
int kaisu = 1; //移動した数
while(flag<2){
//今のpositionの1の数をえる
Kazu kz = new Kazu();
ichi_p = ichi;
ichi = kz.program1(position);
if(position==N){
break;
}else if(position>N){
flag = flag + 1;
Hiku hk = new Hiku();
position = hk.program3(position_p,ichi_p);
//移動回数を増やす
//kaisu = kaisu + 1;
if(flag==2){
kaisu = -1;
}
}else if(position<N){
Tasu ts = new Tasu();
position_p = position;
position = ts.program2(position,ichi);
//移動回数を増やす
kaisu = kaisu + 1;
}
}
System.out.println(kaisu);
}
}
hj5ln8kbDM8t2fF