NYOJ-----最少乘法次数

最少乘法次数

时间限制:1000 ms  |  内存限制:65535 KB
难度:3
 
描述

给你一个非零整数,让你求这个数的n次方,每次相乘的结果可以在后面使用,求至少需要多少次乘。如24:2*2=22(第一次乘),22*22=24(第二次乘),所以最少共2次;

               

 
输入
第一行m表示有m(1<=m<=100)组测试数据;
每一组测试数据有一整数n(0<n<=10000);
输出
输出每组测试数据所需次数s;
样例输入
3
2
3
4
样例输出
1
2
2
 1 #include<iostream>
 2 using namespace std;
 3 int main()
 4 {
 5     int m;
 6     cin>>m;
 7     while(m--)
 8     {
 9         int n;
10         cin>>n;
11         int count=0;
12       while(n/2!=0)
13       {
14           if(n&1)    n--;   //位操作,取n的二进制最后一位来判断奇偶性
15           else n>>=1;
16            count++;
17       }
18       cout<<count<<endl;
19     }
20     return 0;
21 }
View Code
原文地址:https://www.cnblogs.com/gongxijun/p/3203916.html