一、题目链接
http://noi.openjudge.cn/ch0105/16/
二、解题思路
◎ 在1至20年内循环判断:
▲ 如果总积蓄不低于房价,说明当年买得起房,记录当年年数,退出循环;
▲ 否则,增加积蓄,房价上涨;
◎ 循环结束后:如果20年内买得起房,输出买得起房的年数,否则输出Impossible。
三、实施步骤
◎ 定义并输入两个int类型的整数N、K,分别代表年薪、房价的年增长率;
◎ 定义int类型的整数ans=-1,代表买得起房的年数,-1代表买不起房;
◎ 定义两个double类型的浮点数savings=N、price=200,分别代表总积蓄、房价;
◎ 通过标记i代表年数编号,i从1开始,到20为止,递增步长为1,循环处理如下:
▲ if savings>=price:令ans=i,break;
else:令savings=savings+N,price=price+price*K/100;
◎ if ans!=-1:输出ans;
else:输出Impossible。
四、Java程序
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int N = input.nextInt();
int K = input.nextInt();
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) {
System.out.print(ans);
}
else {
System.out.print("Impossible");
}
}
}