結果

問題 No.3 ビットすごろく
コンテスト
ユーザー shinwisteria
提出日時 2017-03-20 15:00:38
言語 Java
(openjdk 25.0.2)
コンパイル:
javac -encoding UTF8 _filename_
実行:
java -ea -Xmx700m -Xss256M -DONLINE_JUDGE=true _class_
結果
MLE  
実行時間 -
コード長 847 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 2,631 ms
コンパイル使用メモリ 82,176 KB
実行使用メモリ 1,251,588 KB
最終ジャッジ日時 2026-03-26 10:17:21
合計ジャッジ時間 30,921 ms
ジャッジサーバーID
(参考情報)
judge2_0 / judge3_1
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
other AC * 9 WA * 6 MLE * 18
権限があれば一括ダウンロードができます

ソースコード

diff #
raw source code

import java.util.Scanner;

public class Bitsugoroku {
	static int N;
	static boolean tof = false;

	public static void main(String[] args) {
		Scanner s = new Scanner(System.in);
		int p = 1,count = 1;
		N = s.nextInt();
		s.close();
		if(N == 1){
			count = 1;
		}else{
			int h = Sugo(p,count);
			if(h == 0){
				count = 0;
			}else{ 
				count += h;
			}
		}
		if(count == 0){	
			System.out.println(-1);
		}else{
			System.out.println(count);
		}
	}
	static int Sugo(int p,int count){
		int d = Integer.bitCount(p);
		if(p + d > N){
			tof = true;
			int k = Sugo(p - d,count);
			if(k == 0){
				count = 0;
			}else{
				count += k;
			}
		}else if(p + d == N){
			count = 1;
		}else if(p - d <= 3 && tof){
			count = 0;
		}else{
			int h = Sugo(p+d,count);
			if(h==0){
				count = 0;
			}else{
				count += h;
			}
		}
		return count;
	}
}
0