A - 必做题11-1
题目描述
蒜头君从现在开始工作,年薪 N 万。他希望在蒜厂附近买一套 60 平米的房子,现在价格是 200 万。假设房子价格以每年百分之 K 增长,并且蒜头君未来年薪不变,且不吃不喝,不用交税,每年所得 N 万全都积攒起来,问第几年能够买下这套房子?(第一年年薪 N 万,房价 200 万)
Input
一行,包含两个正整数N(10≤N≤50),K(1≤K≤20),中间用单个空格隔开。
Output
如果在第 20 年或者之前就能买下这套房子,则输出一个整数 M,表示最早需要在第 M 年能买下;否则输出"Impossible"。
输出时每行末尾的多余空格,不影响答案正确性
Sample Input
50 10
Sample Output
8
题解
此题比较简单,没有什么复杂的思想。
蒜头君的存款和房子的价格,每年都在涨。存款是每年增长固定的数目,价格则是增长总价格的一定比例。设定一个20次的循环,循环时,存款和房价先在去年的基础上增长相应数目,然后两者比较,若存款多于价格,则今年买的起房子,输出年份,结束程序。若循环结束后没有结束程序,输出"Impossible"。
注意第一年房价存款都不增长,直接比较,不妨在循环中,循环从2开始。
注意:有可能出现小数,所以数据都用float型,用int会出错。
代码
#include <iostream>
#include <stdio.h>
using namespace std;
int main(int argc, char** argv) {
float n;//年薪
int k;//增长速率
scanf("%f%d",&n,&k);
float price=200;//房子价格
float money=n;//存款
if(money>=price){printf("1\n");return 0;}//第一年就能买房
for(int i=2;i<=20;i++){
price+=price*(float)k/100;
money+=n;
if(money>=price){printf("%d\n",i);return 0;}
}
printf("Impossible\n");
return 0;
}