网易校招编程笔试题选讲独立的小易

题目描述

小易为了向他的父母表现他已经长大独立了,他决定搬出去自己居住一段时间。一个人生活增加了许多花费: 小易每天必须吃一个水果并且需要每天支付x元的房屋租金。当前小易手中已经有f个水果和d元钱,小易也能去商店购买一些水果,商店每个水果售卖p元。小易为了表现他独立生活的能力,希望能独立生活的时间越长越好,小易希望你来帮他计算一下他最多能独立生活多少天。

输入描述:

输入包括一行,四个整数x, f, d, p(1 ≤ x,f,d,p ≤ 2 * 10^9),以空格分割

输出描述:

输出一个整数, 表示小易最多能独立生活多少天。

示例1

输入

3 5 100 10

输出

11

使用模拟的方法能通过80%

#include <iostream>
using namespace std;

int main()
{
    int x,f,d,p;
    int count=0;
    cin>>x>>f>>d>>p;
    while(d>=x){
        d-=x;           
        if(f)
            f--;
        else{
            if(d>=p)
                d-=p;
            else
                break;
        }
        count++;
      
    }
    cout<<count<<endl;
    
}

考虑优化,首先看看能不能把苹果吃完, 然后再买水果,总的来说也是一个贪心策略

#include <iostream>
using namespace std;

int main()
{
    int x,f,d,p;
    int count=0;
    cin>>x>>f>>d>>p;
    if(d/x <= f){
        cout<<d/x<<endl;
        return 0;
    }
    else{
        d-=x*f;
        count = f;
        count += (d)/(x+p);
        cout<<count<<endl;
    }
    
    
}

猜你喜欢

转载自blog.csdn.net/wwxy1995/article/details/89423382