最少乘法次数
时间限制:
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
-
-
解题思路:n/2累加一次,并且n%2==1再累加一次,然后n=n/2,直到n为1时,即为累加的次数
-
-
#include <iostream> using namespace std; int main() { int m,n,count; cin >> m; while(m--) { count = 0; cin >> n; while(n/2) { if(n%2 > 0) count++; n /= 2; count++; } cout <<count<< endl; } return 0; }
-
第一行m表示有m(1<=m<=100)组测试数据;