>>46
よくわからないが 2^k<x の条件でkの最大でいいのかな
#include <stdio.h>
int main()
{
int x;
int n = 1, k = 0;
scanf("%d",&x);
while(n < x){ n *= 2; k++;}
printf("%d\n", k-1);
return 0;
}