题目描述:
给你一个非零整数,让你求这个数的 n 次方,每次相乘的结果可以在后面使用,求至少需要多少次乘。如 2^4 = 2×2=2 ^2,2 ^ 2×2^2 =2^4
(第二次乘),所以最少共 2 次。
输入描述:
第一行 mm 表示有 m(1≤m≤100) 组测试数据。
每一组测试数据有一整数n(0<n≤10000)。
输出描述:
输出每组测试数据所需次数 s。
输出时每行末尾的多余空格,不影响答案正确性
输入:
4
2 5 1 4
6
输出:
1 5
题意:
字面意思
题解:
直接搞
代码:
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<iostream>
using namespace std;
typedef long long ll;
ll cal(int b){
int step = 0,x = 1;
while(b != 0){
step ++;
if(b % 2 != 0) b -= 1;
else b /= 2;
}
return step;
}
int main(){
int t,n;
scanf("%d",&t);
while(t--){
scanf("%d",&n);
ll ans = cal(n) - 1;
printf("%d\n",ans);
}
return 0;
}