結果

問題 No.3 ビットすごろく
ユーザー hogekihogeki
提出日時 2016-07-31 18:17:26
言語 C#(csc)
(csc 3.9.0)
結果
AC  
実行時間 25 ms / 5,000 ms
コード長 798 bytes
コンパイル時間 2,113 ms
コンパイル使用メモリ 108,528 KB
実行使用メモリ 17,920 KB
最終ジャッジ日時 2024-07-01 08:02:06
合計ジャッジ時間 3,919 ms
ジャッジサーバーID
(参考情報)
judge3 / judge1
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
other AC * 33
権限があれば一括ダウンロードができます
コンパイルメッセージ
Microsoft (R) Visual C# Compiler version 3.9.0-6.21124.20 (db94f4cc)
Copyright (C) Microsoft Corporation. All rights reserved.

ソースコード

diff #

using System;
using System.Collections.Generic;

class BitSugoroku
{
	static void Main(string[] args)
	{
		int N = int.Parse(Console.ReadLine());
		int[] steps = new int[N+1];
		Queue<int> queue = new Queue<int>();

		for(int i=0; i<=N; i++)
		{
			steps[i] = -1;
		}

		steps[1] = 1;
		queue.Enqueue(1);

		while(queue.Count != 0)
		{
			int t = queue.Dequeue();
			int step = bitCount(t);
			if(t+step <= N && steps[t+step] == -1)
			{
				steps[t+step] = steps[t] + 1;
				queue.Enqueue(t+step);
			}
			if(t-step >= 1 && steps[t-step] == -1)
			{
				steps[t-step] = steps[t] + 1;
				queue.Enqueue(t-step);
			}
		}
		Console.WriteLine(steps[N]);
	}
	
	static int bitCount(int n)
	{
		int count=0;
		while(n > 0)
		{
			if((n & 0x01) == 0x01)
				count++;
			n >>= 1;
		}
		return count;
	}
}
0