【题目描述】
我国现有x亿人口,按照每年0.1%的增长速度,n年后将有多少人?保留小数点后四位。
【输入】
一行,包含两个整数x和n,分别是人口基数和年数,以单个空格分隔。
【输出】
输出最后的人口数,以亿为单位,保留到小数点后四位。1<=x<=100,1<=n<=100。
【输入样例】
13 10
【输出样例】
13.1306
#include<iostream>
#include<cstdio>
using namespace std;
int main()
{
int x,n;
double s=1;
scanf("%d%d",&x,&n);
s= x;
for(int i=0;i<n;i++)
{
s=s+s*0.001;
}
printf("%.4lf",s);
return 0;
} 本文来自投稿,不代表本站立场,如若转载,请注明出处:

这题真服了,0.1%的增长速度,一年才长0.013亿,十年才0.13亿,算出来13.1306,看着挺像回事。可现实里人口增长哪是这么线性的?我老家那县城,年年往外跑人,别说0.1%了,不跌就烧高香。这题目就是套个公式完事,连个四舍五入的坑都不设,纯纯送分题。不过话说回来,人家《信息学奥赛一本通》就是这个德行,前面几章全是这种幼儿园题,后面才给你上难度。当年我刷这本书,做到这题的时候还傻乎乎以为信息学奥赛就这?结果翻到后面动态规划直接给我整不会了,那才叫一个怀疑人生。 再细看这题,输入x和n都是整数,x最大100,n最大100,按每年0.1%算,100年后人口变成100乘以1.001的100次方,大概是110.5亿。好家伙,地球现在才80亿,这模型是打算把人类塞进方舟吗?更搞笑的是,题目还写“我国现有x亿人口”,x随便你输入,那要是输个1,十年后1.0100亿,一千零一十万?这哪是人口增长,这是小学数学应用题套了个程序壳子。而且那个“保留到小数点后四位”,输出样例是13.1306,我拿计算器按了一下,13乘1.001的10次方,出来是13.130601多一点,取四位没问题。但你说这第5位是0,所以不进位,要是换个数据,比如14 9,会不会卡在进位边界上?我懒得算了,反正这题考的不是进位,考的是pow函数。 最让我火大的是,这书好多题解写得不负责任。当年我一个同学,照着他答案敲,编译都过不了,气得把书往桌上一摔,骂了句“这写的啥”。后来发现是书里少了个头文件,这种低级错误真能把人逼疯。当然了,这题本身没啥错,是我想多了。可我还是想吐槽一句,0.1%的增长率哪来的?我国这两年人口都负增长了,还年年增加?这题怕是上世纪九十年代编的,那时候还讲计划生育搞得好,人口增长慢,但也不是0.1%这么稳定吧。你哪怕弄个复利计算,也跟现实没关系,纯做题而已。 但话说回来,做题就是做题,较真你就输了。信息学奥赛一本通嘛,本来就是给你练语法用的,不是让你搞人口预测的。你要是真拿它算国家大事,那才叫离谱。不过我也不是完全反对这题,至少它把循环结构练了,还能顺便复习一下格式化输出。就是觉得,这种题目放到2025年,多少有点穿越感。行了,不说了,我去把剩下的题刷完,省得哪天又碰上这种“看起来简单,想多了睡不着”的玩意儿。