文章

【GESP】C++二级练习 luogu-B2063, 人口增长问题

GESP二级练习,数学函数应用,难度★✮☆☆☆。

luogu-B2063 人口增长问题

题目要求

题目描述

假设目前的世界人口有 $x$ 亿,按照每年 $0.1\%$ 的增长速度,$n$ 年后将有多少人?

输入格式

一行两个正整数 $x$ 和 $n$,之间有一个空格。其中,$1 \leq x\leq 100, 1\leq n\leq 100$。

输出格式

一行一个数,表示答案。以亿为单位,保留到小数点后 $4$ 位。

样例输入 #1

1
13 10

样例输出 #1

1
13.1306

题目分析

本题的关键是理解人口增长的规律。每年人口增长 $0.1\%$,这意味着每年人口增加的百分比为 $0.1\%$。为了计算 $n$ 年后的人口,我们可以使用复利增长的公式:

\[P = P_0 \times (1 + r)^n\]

其中,$P$ 是 $n$ 年后的人口,$P_0$ 是初始人口,$r$ 是每年的增长率(这里为 $0.1\%$),$n$ 是年数。

在本题中,我们需要计算 $n$ 年后的人口,并保留到小数点后 $4$ 位。为此,我们可以使用 pow 函数来计算 $(1 + r)^n$,然后乘以初始人口 $P_0$,即 $x$。

在代码中,我们首先读取输入的 $x$ 和 $n$,然后使用 pow 函数计算 $(1 + 0.001)^n$,并乘以 $x$,得到 $n$ 年后的人口。最后,我们使用 printf 函数输出结果,保留到小数点后 $4$ 位。

示例代码

1
2
3
4
5
6
7
8
9
10
11
#include <cstdio>
#include <iostream>
#include <cmath>
using namespace std;
int main() {
    int x, n; // 定义变量x和n
    cin >> x >> n; // 读取输入的x和n
    double ans = pow(1.001, n) * x ; // 计算答案
    printf("%.4f", ans); // 输出答案,保留4位小数
    return 0;
}

所有代码已上传至Github:https://github.com/lihongzheshuai/yummy-code

GESP各级别考纲要点、知识拓展和练习题目清单详见C++学习项目主页

luogu-”系列题目已加入洛谷Java、C++初学团队作业清单,可在线评测,团队名额有限,欢迎加入。

bcqm-”系列题目可在编程启蒙题库进行在线评测。

本文由作者按照 CC BY 4.0 进行授权