题意:
蒜头君从现在开始工作,年薪 N 万。他希望在蒜厂附近买一套 60 平米的房子,现在价格是 200万。假设房子价格以每年百分之 K 增长,并且蒜头君未来年薪不变,且不吃不喝,不用交税,每年所得 N 万全都积攒起来,问第几年能够买下这套房子?(第一年年薪 N 万,房价 200 万)
输入格式
一行,包含两个正整数 N(10≤N≤50),K(1≤K≤20),中间用单个空格隔开。
输出格式
如果在第 20 年或者之前就能买下这套房子,则输出一个整数 M,表示最早需要在第 M 年能买下;否则输出"Impossible"。
输入样例:
50 10
输出样例:
8
思路:
维护一个int变量prc,用于记录当前房价,维护一个int变量money,用于记录当前存储的钱,进入一个循环,每次money自加N,prc也根据增幅自增,直到超过20次循环或者是money>prc为止,根据不同情况输出答案。
代码:
#include <iostream>
using namespace std;
int main()
{
int N;
double K;
cin >> N >> K;
int i = 1;
int money = N;
double prc = 200;
while (1) {
money = money + N;
i++;
double oldPrc = prc;
prc = prc * (1 + K / 100);
if (money >= prc) {
cout << i << endl;
break;
}
if (i > 20) {
cout << "Impossible" << endl;
break;
}
if (prc - oldPrc <= N) {
continue;
}
else {
cout << "Impossible" << endl;
break;
}
}
}