using System; using System.Diagnostics; namespace CodeIq { internal class Program { /// /// Saraは、「ふしぎなポケット」を手に入れた。 /// /// 「ふしぎなポケット」は、いくつかビスケットを入れて叩くと、入れたビスケットの数が2倍になる。 /// Saraは最初1枚のビスケットを持っていて、「ふしぎなポケット」を使ってちょうどN枚のビスケットにして、全部食べたいと思っている。 /// (食べきれないので枚数をオーバーしてはいけない) /// /// この時、ちょうどN枚にするには、Saraは最低何回ポケットを叩く必要があるか求めてください。 /// private static void Main() { // パラメータ取得 var line = Console.ReadLine(); //var line = "3"; if( string.IsNullOrEmpty( line ) ) return; var paramData = line.Split( ' ' ); var n = int.Parse( paramData[0] ); // クッキーの数がNを超過しないように都度「ふしぎなポケット」にクッキーを入れられるだけ入れて叩く var cookieCount = 1; var hitCount = 0; while( cookieCount != n ) { var wantCookieCount = ( n - cookieCount ); var pocket = ( wantCookieCount < cookieCount ) ? wantCookieCount : cookieCount; cookieCount += pocket; hitCount++; } Debug.Print( hitCount.ToString() ); Console.WriteLine( hitCount ); } } }