2018网易校招内推笔试-独立的小易(python)

本文介绍了一种算法,用于计算在有限的资金和水果存量下,个人能够独立生活的最大天数。通过分类讨论的方法,考虑资金与水果数量的关系,得出最优解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目描述:

小易为了向他的父母表现他已经长大独立了,他决定搬出去自己居住一段时间。一个人生活增加了许多花费: 小易每天必须吃一个水果并且需要每天支付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)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值