0
簡単にするために、負の値を考慮しないでください。
既知の解決策 #1
return (int)(Math.log(x)/Math.log(2)); // pseudo code
問題: 数値的に不安定。入力の場合x=4
、2 または 1 で応答します。
既知の解決策 #2
for(int i=0; ;++i)
{
x = x >> 1;
if(x==0)
return i;
}
問題: 平均的な複雑さは O(n) で、n は型のビット数です。一定時間回答していただきたいです。