描述
某程序员开始工作,年薪N万,他希望在中关村公馆买一套60平米的房子,现在价格是200万,假设房子价格以每年百分之K增长,并且该程序员未来年薪不变,且不吃不喝,不用交税,每年所得N万全都积攒起来,问第几年能够买下这套房子?(第一年年薪N万,房价200万)
输入
一行,包含两个正整数N(10 <= N <= 50), K(1 <= K <= 20),中间用单个空格隔开。
输出
如果在第20年或者之前就能买下这套房子,则输出一个整数M,表示最早需要在第M年能买下,否则输出Impossible。
先吐槽一下这道题,程序员都那么难了,你还在折磨他
思路:程序员的工资不变就每过一年(每循环一次(一年)加一次 即累加)
房价就是每年都乘以增长率即可。
然后每一年变化之后再进行比较
#include<stdio.h>
int main(){
double n,k;
scanf("%lf %lf",&n,&k);
double K=(k/100)+1; //这里是把增长率和本金加在一起了,方便后面的计算
int year,x;
double a=n,b=200.0; //因为计算每一年之后计算出的房价肯定是带小数的就定义了double
for(year=1;year<=20;year++){ 因为year的范围是1-20.所以这里循环是这样定义的
if (a>=b){ //因为我前面已经定义好了第一年的初始值,所以上来先比较,后面再计算下一年的工资的总数和变化后的房价
break; //break就是退出for循环,这里指当程序员的工资总额大于等于房价是退出循环
}
a=a+n;
b=b*K;
}
if (year<=20)
printf("%d",year); //退出循环后如果符合year的范围,就输出此时的year值
else
printf("Impossible");
return 0;
}
注:break指退出循环