问题描述
给你一个非零整数,让你求这个数的n次方,每次相乘的结果可以在后面使用,求至少需要多少次乘。如24:22=22(第一次乘),2222=24(第二次乘),所以最少共2次;
输入格式
第一行m表示有m(1<=m<=100)组测试数据;
每一组测试数据有一整数n(0<n<=100000000);
输出格式
输出每组测试数据所需次数s;
样例输入
3
2
3
4
样例输出
1
2
2
思路:简单的二分法。奇数乘两次,偶数一次。
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int m = scanner.nextInt();
int[] arr = new int[m];
for (int i = 0; i < arr.length; i++) {
arr[i] = scanner.nextInt(); //简单的数组输出
}
for (int i = 0; i < m; i++) {
System.out.println(f(arr[i])); //调用方法
}
}
public static int f(int n) {
int ans = 0;
while (n != 1) { //满足条件进入循环
if (n % 2 == 0) {
ans += 1; //偶数
} else {
ans += 2; //奇数
}
n /= 2; //取前一位
}
return ans;
}
}