解题思路:
核心逻辑:逐年模拟与判断
循环限制:year < 20 保证最多模拟 20 年,符合题目要求;
年薪积累:每年先执行savings += N,表示第year年结束后,程序员积攒了当年的年薪(题目规定 “每年所得 N 万全都积攒起来”);
购房判断:若当前存款≥当年房价,记录年份并退出循环(保证 “最早” 年份);
房价更新:若当年无法购房,按增长率K%更新房价(转换为小数K/100.0,避免整数除法)。
注意事项:
1.核心逻辑是逐年模拟存款积累与房价增长,先积累年薪再判断是否能购房,保证逻辑顺序正确;
2.房价和存款需用double类型,避免增长率计算的精度丢失;
3.循环最多执行 20 次,找到最早年份后立即退出,保证效率;
4.结果判断清晰,区分 “20 年内可行” 与 “20 年内不可行” 两种场景,符合题目输出要求。
参考代码:
#include<stdio.h>
int main()
{
int N=0,K=0;
scanf("%d %d",&N,&K);
int year=1;
int savings=0;
double growth_factor=1.0+K/100.0;
double need_money=200;
int found=0;
// 标记是否找到可行年份,初始为0(未找到)
// 循环最多20年,逐年模拟
while(year<=20)
{
savings=year*N;
if(savings>=need_money)
{
printf("%d",year);
found=1;// 标记为已找到
break;
}
need_money=need_money*growth_factor;
year++;
}//循环跑完 20 年(year 从 1 到 20 全部遍历)
if(found==0)
{
printf("Impossible");
}
return 0;
}
0.0分
0 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复