福建省建设厅网站建造师证转出在线培训课程
一、题目描述
小明在玩一个数字加减游戏,只使用加法或者减法,将一个数字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;// 统计用了多少次aint 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机考。专栏会持续更新,每天在线答疑。