首页 > 试题广场 >

独立的小易

[编程题]独立的小易
  • 热度指数:477 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
小易为了向他的父母表现他已经长大独立了,他决定搬出去自己居住一段时间。一个人生活增加了许多花费: 小易每天必须吃一个水果并且需要每天支付x元的房屋租金。当前小易手中已经有f个水果和d元钱,小易也能去商店购买一些水果,商店每个水果售卖p元。小易为了表现他独立生活的能力,希望能独立生活的时间越长越好,小易希望你来帮他计算一下他最多能独立生活多少天。

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


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

输入

3 5 100 10

输出

11
第一种情况:如果小易带的水果足够多,钱用了,水果还没吃完,那钱只有付房租就行,不用买水果;
则对应代码为:
if(d / x <= f)
 cout << d / x << endl;
第二种情况:如果小易带的水果不多,水果吃完了,钱还有剩余,则最后钱还得付房租和买水果,设最多能生活D天,则有以下方程:
Dx + (D-f)p<=d
化简得:
D <= (d + f*p) / (x + p)
以下是完整代码:
#include <bits/stdc++.h>
using namespace std;
 
int main()
{
    long long x, f, d, p;
    cin >> x >> f >> d >> p;
    if(d / x <= f)
        cout << d / x << endl;
    else
        cout << (d + f*p) / (x + p) << endl;
  
    return 0;
}

编辑于 2018-08-08 09:12:32 回复(0)
#include<iostream>
using namespace std;
int main(){
    int x=0,f=0,d=0,p=0;
    cin>>x>>f>>d>>p;
    long long ans=d/x;
    if(ans<=f){
        cout<<ans<<endl;
    }else{
        cout<<f+(d-f*x)/(p+x)<<endl;
    }
 
    return 0;
}

发表于 2019-08-03 00:18:19 回复(0)
#include <iostream>
#include <vector>
 
usingnamespacestd;
intdayMax(intx, intf, intd, intp)
{
    intdays = 0;
    if(d / x < f)
    {
        returnd / x;
    }
    elseif(d / x == f)
    {
        returnf;
    }
    else
    {
        days = f;
        intleftMoney = d - x*f;
        returnleftMoney / ( x + p) + days;
    }
 
 
 
 
 
    returndays;
}
 
 
intmain()
{
   intx,f,d,p;
   cin >> x >> f >> d >> p;
 
   cout << dayMax(x,f,d,p);
 
 
    return0;
}
发表于 2018-08-04 18:08:38 回复(0)