算法Day33 不会算数的小明

不会算数的小明

Description

现在有一个数字startValue,小明不会算数,只会以下两种操作:
双倍(Double):将数字乘2;
递减(Decrement):将数字减1。
给定两个整数startValue和target。返回显示数字target所需的最小操作数。

Input

输入两个整数startValue和target,startValue和target之间用“ ”隔开,且1≤startValue, target≤10^9

Output

输出startValue得到数字target所需的最小操作数。

Sample

在这里插入图片描述

代码

import java.util.Scanner;

public class Main {
   

    public static void main(String[] args) {
   

        Scanner in = new Scanner(System.in);

            int a = in.nextInt();

            int b = in.nextInt();

            System.out.println(brokenCalc(a,b));

    }
    public static int brokenCalc(int X, int Y) {
   
        int ans = 0;
        while(Y > X) {
   
            ans++;
            if (Y%2 == 1) Y++;
            else Y /= 2;
        }
        return ans + X - Y; // 我们还需要执行 X - Y 次加法操作以得到 X
    }

}

思路

假设Y = X*2-1,那么X =(Y+1)*2
x>y有不断减即可,x<y则奇数偶数判断再累加

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-13 22:30:05       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-13 22:30:05       100 阅读
  3. 在Django里面运行非项目文件

    2023-12-13 22:30:05       82 阅读
  4. Python语言-面向对象

    2023-12-13 22:30:05       91 阅读

热门阅读

  1. 利用断路器状态统计sentinel熔断次数

    2023-12-13 22:30:05       69 阅读
  2. Json格式化

    2023-12-13 22:30:05       71 阅读
  3. ThreadLocal和InheritableThreadLocal

    2023-12-13 22:30:05       57 阅读
  4. vue3父子传值实现弹框功能

    2023-12-13 22:30:05       59 阅读
  5. CentOS 7 部署pure-ftp

    2023-12-13 22:30:05       60 阅读
  6. LeetCode //C - 1. Two Sum

    2023-12-13 22:30:05       62 阅读
  7. 【编码器】位置管理器BoosterPack

    2023-12-13 22:30:05       55 阅读