一、题目描述
小明在玩一个数字加减游戏,只使用加法或者减法,将一个数字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机考。专栏会持续更新,每天在线答疑。