时间限制: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 }