Lanqiaoカップ-アルゴリズムトレーニング-6-2バイナリ表現のビット数を再帰的に見つける

トピック


問題の説明
  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
请按任意键继续. . .

おすすめ

転載: blog.csdn.net/mjh1667002013/article/details/114457310