一、题目链接
http://noi.openjudge.cn/ch0105/16/
二、解题思路
◎ 在1至20年内循环判断如下:
→ 如果总积蓄不低于房价,说明当年买得起房,记录当年年数,退出循环;
否则,增加积蓄,房价上涨;
◎ 循环结束后:
→ 如果20年内买得起房,输出买得起房的年数;
否则,输出Impossible。
三、实施步骤
◎ 首先,定义并输入两个int类型的整数N、K,分别代表年薪、房价的年增长率;
◎ 其次,定义int类型的整数ans,代表买得起房的年数,初始时ans为-1,代表买不起房;
◎ 然后,定义两个double类型的浮点数savings、price,分别代表总积蓄、房价,初始时savings=N,price=200;
◎ 第四,通过标记i代表年数编号,i从1开始,到20为止,更新步长为1,循环处理如下:
→ 如果savings>=price:令ans=i,break;
否则:令savings=savings+N,price=price+price*K/100;
◎ 最后:
→ 如果ans!=-1:输出ans;
否则:输出Impossible。
四、C++程序
#include <iostream>
using namespace std;
int main()
{
int N;
int K;
cin >> N;
cin >> K;
int ans = -1;
double savings = N;
double price = 200;
for (int i = 1; i <= 20; i++)
{
if (savings >= price)
{
ans = i;
break;
}
else
{
savings = savings + N;
price = price + price * K / 100;
}
}
if (ans != -1)
{
cout << ans;
}
else
{
cout << "Impossible";
}
return 0;
}