using System; using System.Collections.Generic; class Program { //http://yukicoder.me/submissions/36416 ←参考にさせていただきました static void Main(string[] args) { int max = 100000000 + 1; int min = 0; bool finish = true; int count = 0; while (count < 30 && max - min > 10) { count ++; int mid = (min + max) / 2; Console.WriteLine("? " + mid); int answer = int.Parse(Console.ReadLine()); if (answer == 1)//↑にある { min = mid; } else if(answer == -1)//↓にある { max = mid; } else //ちょうどやで { Console.WriteLine("! "+ (mid-1)); finish = false; break; } } int ans = max - min; while (finish) { Console.WriteLine("? " + ans); int answer = int.Parse(Console.ReadLine()); if (answer == 1) { if (ans >= 5) { ans -= 5; } else { ans = 0; } } else if(answer == 0) { Console.WriteLine((ans == 0) ? "! " + 0.ToString() : "! " + (ans-1)); break; } } Console.ReadKey(); } }