トピック
問題の説明
10進数の整数を指定して、対応する2進数のビット数を返します。たとえば、10進数の9を入力すると、対応する2進数は1001になるため、桁数は4になります。
サンプル入力
質問の要件を満たす入力サンプル。上記の入力サンプルの出力に対応する
9
サンプル出力
。
アイデア
この問題を解決するには、いつでも無限ループを使用して、2のi乗がnより大きいかどうかを判断できます。nより大きい場合、この時点で2桁の桁数はiである必要があります。 2の0回目、およびすべての実際の操作中に表示される桁数はi-1です。個人的には、もっと良い解決策になるはずだと思います。
コード
#include <stdio.h>
#include<math.h>
int main()
{
int n,i;
scanf("%d",&n);
for(i=0;;i++){
if(pow(2,i)>n){
printf("%d\n",i);
break;
}
}
return 0;
}
结果:
9
4
--------------------------------
Process exited after 1.452 seconds with return value 0
请按任意键继续. . .