using System;
public class Test
{
public static int GetMinimumSequenceOP(int n)
{
if (n == 1)
return 1;
int count = 1;
int temp = 1;
for (int i = 2; i <= n; i++)
{
temp = temp * 2;
if (temp >= n)
{
temp = temp/2;
temp = temp + 1;
}
count++;
if(temp == n)
break;
}
return count;
}
public static int GetMinimumSequence(int n)
{
int prevexponent = (int)Math.Log(n, 2);
return 1 + prevexponent + n - (1 << prevexponent);
}
public static void Main()
{
for (int i = 1; i <= 100; i++) {
Console.Write("Input " + i + " output " + Test.GetMinimumSequence(i)
+ " OP " + GetMinimumSequenceOP(i) + "\n");
}
}
}
dXNpbmcgU3lzdGVtOwoKcHVibGljIGNsYXNzIFRlc3QKewoJCglwdWJsaWMgc3RhdGljIGludCBHZXRNaW5pbXVtU2VxdWVuY2VPUChpbnQgbikKICAgICAgICB7CiAgICAgICAgICAgIGlmIChuID09IDEpCiAgICAgICAgICAgICAgICByZXR1cm4gMTsKCiAgICAgICAgICAgIGludCBjb3VudCA9IDE7CiAgICAgICAgICAgIGludCB0ZW1wID0gMTsKICAgICAgICAgICAgZm9yIChpbnQgaSA9IDI7IGkgPD0gbjsgaSsrKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICB0ZW1wID0gdGVtcCAqIDI7CiAgICAgICAgICAgICAgICBpZiAodGVtcCA+PSBuKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIHRlbXAgPSB0ZW1wLzI7CiAgICAgICAgICAgICAgICAgICAgdGVtcCA9IHRlbXAgKyAxOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgY291bnQrKzsKICAgICAgICAgICAgICAgIGlmKHRlbXAgPT0gbikKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gY291bnQ7CiAgICAgICAgfQoJCglwdWJsaWMgc3RhdGljIGludCBHZXRNaW5pbXVtU2VxdWVuY2UoaW50IG4pCiAgICB7CiAgICAJaW50IHByZXZleHBvbmVudCA9IChpbnQpTWF0aC5Mb2cobiwgMik7CiAgICAJcmV0dXJuIDEgKyBwcmV2ZXhwb25lbnQgKyBuIC0gKDEgPDwgcHJldmV4cG9uZW50KTsKICAgIH0KCQoJcHVibGljIHN0YXRpYyB2b2lkIE1haW4oKQoJewoJCWZvciAoaW50IGkgPSAxOyBpIDw9IDEwMDsgaSsrKSB7CgkJCUNvbnNvbGUuV3JpdGUoIklucHV0ICIgKyBpICsgIiBvdXRwdXQgIiArIFRlc3QuR2V0TWluaW11bVNlcXVlbmNlKGkpCgkJCSAgICArICIgT1AgIiArIEdldE1pbmltdW1TZXF1ZW5jZU9QKGkpICsgIlxuIik7CgkJfQoJfQp9