解题思路

这是一道关于生活费用规划的问题。主要思路如下:

  1. 问题分析:

    • 小易每天需要吃一个水果
    • 每天需要支付 元房租
    • 初始有 个水果和 元钱
    • 商店每个水果售价
  2. 优化思路:

    • 先判断初始资金能否支撑使用完所有水果
    • 如果能支撑,计算总资产(钱+水果价值)能维持的天数
    • 如果不能支撑,直接输出资金能支撑的天数
  3. 关键点:

    • 判断条件:
    • 总资产计算:
    • 每日支出:

代码

#include<bits/stdc++.h>
using namespace std;

int main(){
    long long x, f, d, p;
    cin >> x >> f >> d >> p;
    
    if(d / x >= f){
        // 如果钱足够支撑用完所有水果
        long long a = d + f*p;  // 总资产
        long long res = a / (x + p);  // 可维持的总天数
        cout << res;
    } else{
        // 如果钱不够支撑用完水果
        cout << d / x;
    }
    return 0;
}
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        long x = sc.nextLong();  // 每日房租
        long f = sc.nextLong();  // 初始水果数
        long d = sc.nextLong();  // 初始资金
        long p = sc.nextLong();  // 水果价格
        
        if(d / x >= f) {
            // 如果钱足够支撑用完所有水果
            long a = d + f * p;  // 总资产
            long res = a / (x + p);  // 可维持的总天数
            System.out.println(res);
        } else {
            // 如果钱不够支撑用完水果
            System.out.println(d / x);
        }
    }
}
# 读入数据
x, f, d, p = map(int, input().split())

if d // x >= f:
    # 如果钱足够支撑用完所有水果
    a = d + f * p  # 总资产
    res = a // (x + p)  # 可维持的总天数
    print(res)
else:
    # 如果钱不够支撑用完水果
    print(d // x)

复杂度分析

  • 时间复杂度:
    • 只需要简单的数学计算
  • 空间复杂度:
    • 只需要几个变量存储数据