一、题目链接
http://noi.openjudge.cn/ch0105/16/
二、解题思路
⑴ 设定一个int变量ans,代表买得起房的年份,初始时ans为-1,代表买不起房;
⑵ 设定两个double变量savings、price,分别代表程序员的总积蓄、房价,初始时:
savings = N,price = 200;
⑶ 显然,从第1年开始,到第20年为止,通过循环,做如下操作:
① 如果程序员的总积蓄savings大于等于房价price,代表当年能够买得起房,令ans为当前年份,然后直接
退出循环;否则,代表当年买不起房,更新总积蓄和房价:
savings = savings + N,price = price + price * K / 100
⑷ 循环结束后,如果ans不等于-1,则输出ans;否则输出Impossible。
三、程序代码
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();
double savings = N;
double price = 200;
int ans = -1;
for (int i = 1; i <= 20; i++) {
if (savings >= price) {
ans = i;
break;
}
else {
savings = savings + N;
price = price + price * K / 100;
}
}
System.out.print(ans == -1 ? "Impossible" : ans);
}
}