結果
| 問題 | No.3 ビットすごろく |
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2019-01-22 16:14:48 |
| 言語 | C#(csc) (csc 3.9.0) |
| 結果 |
AC
|
| 実行時間 | 28 ms / 5,000 ms |
| コード長 | 1,207 bytes |
| コンパイル時間 | 920 ms |
| コンパイル使用メモリ | 112,908 KB |
| 実行使用メモリ | 26,976 KB |
| 最終ジャッジ日時 | 2024-07-01 09:12:51 |
| 合計ジャッジ時間 | 2,658 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge5 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 33 |
コンパイルメッセージ
Microsoft (R) Visual C# Compiler version 3.9.0-6.21124.20 (db94f4cc) Copyright (C) Microsoft Corporation. All rights reserved.
ソースコード
using System;
using System.Collections.Generic;
using System.Linq;
namespace No003_ビットすごろく
{
class Program
{
static void Main(string[] args)
{
int N = int.Parse(Console.ReadLine());
int[] box = Enumerable.Repeat(-1, N + 1).ToArray();
Queue<int> que = new Queue<int>();
box[1] = 1;
que.Enqueue(1);
while (que.Count != 0)
{
int pos = que.Dequeue();
int bit = BitNumber(pos);
if (pos - bit > 0 && box[pos - bit] == -1)
{
box[pos - bit] = box[pos] + 1;
que.Enqueue(pos - bit);
}
if (pos + bit <= N && box[pos + bit] == -1)
{
box[pos + bit] = box[pos] + 1;
que.Enqueue(pos + bit);
}
}
Console.WriteLine(box[N]);
}
static int BitNumber(int a)
{
int temp = 0;
do
{
temp += a % 2;
a /= 2;
} while (a > 0);
return temp;
}
}
}