题目描述:
小易为了向他的父母表现他已经长大独立了,他决定搬出去自己居住一段时间。一个人生活增加了许多花费: 小易每天必须吃一个水果并且需要每天支付x元的房屋租金。当前小易手中已经有f个水果和d元钱,小易也能去商店购买一些水果,商店每个水果售卖p元。小易为了表现他独立生活的能力,希望能独立生活的时间越长越好,小易希望你来帮他计算一下他最多能独立生活多少天。
输入描述:
输入包括一行,四个整数x, f, d, p(1 ≤ x,f,d,p ≤ 2 * 10^9),以空格分割
输出描述:
输出一个整数, 表示小易最多能独立生活多少天。
示例1
输入
3 5 100 10
输出
11
解题思路:
这道题分类讨论就可以:
1、水果比较多,钱比较少,导致水果还没吃完,钱已经付完房钱了。这种情况,只能过d/x
2、钱足够多,多到可以吃完水果,要开始买水果。这里有分,水果比较贵,一个都买不起,则为生活f天;水果买的起,这可以过n天,n满足
n*x+(n-f)*p<=d -> max n=(d+f*p)/(x+p)
代码如下:
mport sys
line=sys.stdin.readline().strip()
def get_n(s):
s_list=s.split()
x=int(s_list[0])
f=int(s_list[1])
d=int(s_list[2])
p=int(s_list[3])
if d<=f*x:
return d/x
if d>f*x:
if f*x+p>d:
return f
else:
return (d+f*p)/(x+p)
print get_n(line)