
一、题目描述
小明在玩一个数字加减游戏,只使用加法或者减法,将一个数字s变成数字t。
每个回合,小明可以用当前的数字加上或减去一个数字。
现在有两种数字可以用来加减,分别为a,其中b没有使用次数限制。
请问小明最少可以用多少次a,才能将数字s变成数字t。
题目保证数字s一定能变成数字t。
二、输入描述
输入一行,包含四个正整数(s t a b)。
1 <= s,t,a,b <= 105并且 a != b。
三、输出描述
输出的唯一一行包含一个整数,表示最少需要使用多少次a才能将数字s变成数字t。
四、Java算法源码
public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    /**
     * 通过加减运算,将s变为t。
     * 统计一下用到了多少次a,不用统计用多少次b。
     */
    int[] arr = Arrays.stream(sc.nextLine().split(" ")).mapToInt(Integer::parseInt).toArray();
    int s = arr[0];
    int t = arr[1];
    int a = arr[2];
    int b = arr[3];
    int sum = 0;// 统计用了多少次a
    int add = s;// 加
    int sub = s;// 减
    while (true) {
        if ((t - add) % b == 0) {
            break;
        }
        if ((t - sub) % b == 0) {
            break;
        }
        add += a;
        sub -= a;
        sum++;
    }
    System.out.println(sum);
}
 
五、效果展示
1、输入
1 15 2 5
2、输出
2
3、说明
初始值1加一次a变成3,再加一次a变为5,然后加两次b变为1,5,因此a的使用次数为2次。

🏆下一篇:华为OD机试真题 Java 实现【获得完美走位】【2023Q1 100分】
🏆本文收录于,华为OD机试(JAVA)(2022&2023)
本专栏包含了最新最全的2023年华为OD机试真题,有详细的分析和Java解答。已帮助1000+同学顺利通过OD机考。专栏会持续更新,每天在线答疑。




















