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

时间:2022-05-05
本文章向大家介绍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 }