蓝桥算法训练 乘法次数 JAVA暴解

问题描述
  给你一个非零整数,让你求这个数的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;
	}
}

小剧场:接纳的时候 可能会比抵抗更有力量。

发布了108 篇原创文章 · 获赞 113 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_43771695/article/details/104653601