最小乘法次數 XYNUOJ

                                             1240: 最少乘法次數

                                                            時間限制: 3 Sec  內存限制: 128 MB
 

題目描述

給你一個非零整數,讓你求這個數的n次方,每次相乘的結果可以在後面使用,求至少需要多少次乘。如24:2*2=22(第一次乘),22*22=24(第二次乘),所以最少共2次;

輸入

第一行m表示有m(1<=m<=100)組測試數據;
每一組測試數據有一整數n(0<n<=10000);

輸出

輸出每組測試數據所需次數s;

用到m>>=1;

#include<stdio.h>
#include<math.h>


int main()
{
	int n,m,cnt;
	scanf("%d",&n);
	while(n--)
	{
             scanf("%d",&m);
              cnt=0;
              while(m)
              {
                      if(m&1) cnt++;   
                      cnt++;
                      m>>=1;
              }
              printf("%d\n",cnt-2);
	}
}       

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章