华为OD机试-数字加减游戏-2022Q4 A卷-Py/Java/JS

小明在玩一个数字加减游戏,只使用加法或者减法,将一个数字s变成数字t。
每个回合,小明可以用当前的数字加上或减去一个数字。
现在有两种数字可以用来加减,分别为a,b(a!=b),其中b没有使用次数限制。
请问小明最少可以用多少次a,才能将数字s变成数字t。
题目保证数字s一定能变成数字t。
输入描述
输入的唯一一行包含四个正整数s,t,a,b(1<=s,t,a,b<=105),并且a!=b.

输出描述
输出的唯一一行包含一个整数,表示最少需要使用多少次a才能将数字s变成数字t.

示例1
输入:
1 10 5 2
输出:

1
说明:
初始值1加一次a变成6,然后加两次b变为10,因此a的使用次数为1次。

示例2
输入:
11 33 4 10
输出:
2
说明:
11减两次a变成3,然后加三次b变为33,因此a的使用次数为2次。

Java 代码

import java.util.Scanner;
import java.util.*;
import java.util.stream.Collectors;
import java.math.BigInteger;
 
class Main {
	public static void main(String[] args) {
        // 处理输入
        Scanner in = new Scanner(System.in);
        int s = in.nextInt();
        int t = in.nextInt();
        int a = in.nextInt();
        int b = in.nextInt();
 
        int res = 0;
        int add = s;
        int sub = s;
        while (true){
            if((t - add)%b == 0){
                break;
            }
            if((t - sub)%b == 0){
                break;
            }
            add += a;
            sub -= a;
            res++;
        }
 
        System.out.println(res);
    }
}

Python代码

import functools
import sys
from collections import Counter, defaultdict
import copy
from itertools import permutations
import re
import math
import sys
 
#处理输入
nums = [int(x) for x in input().split(" ")]
s = nums[0]
t = nums[1]
a = nums[2]
b = nums[3]
 
res = 0
add = s
sub = s
while (True):
    if((t - add)%b == 0):
        break;
    
    if((t - sub)%b == 0):
        break;
    
    add += a
    sub -= a
    res+=1
 
print(res)

JS代码

function main(nums){
    let s = nums[0]
    let t = nums[1]
    let a = nums[2]
    let b = nums[3]
 
    let res = 0
    let add = s
    let sub = s
    while (true){
        if((t - add)%b == 0)
            break
        
        if((t - sub)%b == 0)
            break
        
        add += a
        sub -= a
        res+=1
    }
 
    console.log(res)
}
 
main([11, 33, 4, 10])

你可能感兴趣的:(java,javascript,华为,python)