给你一个非零整数,让你求这个数的n次方,每次相乘的结果可以在后面使用,求至少需要多少次乘。如24:2*2=22(第一次乘),22*22=24(第二次乘),所以最少共2次;
3 2 3 4
1 2 2
#include <iostream>
using namespace std;
int main(int argc, char* argv[])
{
	int 
  t;
	cin>>t;
	while(t--)
	{
int 
  n,count;
		cin>>n;
		count=0;
		while(n!=1)
		{
			count++;
		 
     if(n%2==1) count++;
		    
  n=n/2;
		}
		cout<<count<<endl;
	}
    return 
  0;
}
原文:http://www.cnblogs.com/52Cyan/p/3681753.html