1 条题解
-
0
练32.3 买房子
解题思路
第一年房价 200。第 y 年存款为 yN,先比较存款与本年房价,若不足再让房价乘 1+K/100 进入下一年,最多20年。
正确性说明
按上述推导执行:每次仅处理当前输入或当前步骤,并把它对答案的贡献计入对应状态。所有需要处理的情况均被覆盖,结束时保存的量就是题目所求。
易错点
第一年不能先涨价;买得起条件含相等。
复杂度
最多20轮,时间 O(1),空间 O(1)。
参考代码(C++11)
#include <bits/stdc++.h> using namespace std; int main() { ios::sync_with_stdio(false); cin.tie(nullptr); double N, K; cin >> N >> K; double price = 200; for (int y = 1; y <= 20; y++) { if (y * N >= price) { cout << y << "\n"; return 0; } price *= 1 + K / 100; } cout << "Impossible\n"; return 0; }
- 1