解题思路
这是一道关于生活费用规划的问题。主要思路如下:
-
问题分析:
- 小易每天需要吃一个水果
- 每天需要支付
元房租
- 初始有
个水果和
元钱
- 商店每个水果售价
元
-
优化思路:
- 先判断初始资金能否支撑使用完所有水果
- 如果能支撑,计算总资产(钱+水果价值)能维持的天数
- 如果不能支撑,直接输出资金能支撑的天数
-
关键点:
- 判断条件:
- 总资产计算:
- 每日支出:
- 判断条件:
代码
#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)
复杂度分析
- 时间复杂度:
- 只需要简单的数学计算
- 空间复杂度:
- 只需要几个变量存储数据