资源限制
时间限制:1.0s 内存限制:999.4MB
问题描述
给你一个非零整数,让你求这个数的n次方,每次相乘的结果可以在后面使用,求至少需要多少次乘。如24:2*2=22(第一次乘),22*22=24(第二次乘),所以最少共2次;
输入格式
第一行m表示有m(1<=m<=100)组测试数据;
每一组测试数据有一整数n(0<n<=100000000);
输出格式
输出每组测试数据所需次数s;
样例输入
3
2
3
4
样例输出
1
2
2
代码:
#include<stdio.h>
int main(){
int m;
int n[100], result[100];
int i, j, number, flag, num;
scanf("%d",&m);
for(i = 0; i < m; i++){
scanf("%d",&n[i]);
}
for(i = 0; i < m; i++){
num = n[i];
number = 0;
for(j = 0; num > 1 ; j++){
if((num % 2) == 0){
num = num / 2;
number = number + 1;
}
else{
num = num - 1;
num = num / 2;
number = number + 2;
}
}
result[i] = number;
}
for(i = 0; i < m; i++){
printf("%d\n",result[i]);
}
return 0;
}
有问题留言嗷 !~!