当前位置: 首页 > 面试经验 >

【华为OD机试2023】数字加减游戏(Python)

优质
小牛编辑
168浏览
2023-03-28

【华为OD机试2023】数字加减游戏(Python)

题目描述:

小明在玩一个数字加减游戏,只使用加法或者减法,将一个数字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次。

解题思路:

由于是要求次数最少,那么a只可能是+或者-,而不会出现又+又-,把各种情况列一下,计算最小值即可


s,t,a,b=map(int,input().split())
min_time=0
for i in range(105):
if abs(t+a*i-s)%b==0:
min_time=i
break
if abs(t-a*i-s)%b==0:
min_time = i
break
print(min_time)

#华为机试,emo了#
 类似资料: