每年人口乘 1.001,n 年后人口就是 x*1.001^n,逐年递推相乘后用 printf 的 %.4f 保留四位小数输出。
OJ: roj
题目 ID: 1070
难度:入门
标签:入门数学浮点数python
创建: 2026-09-29 17:27
更新: 2026-10-05 00:05
题目描述
我国现有
样例输入 13 10,样例输出 13.1306。
思路
“每年增长 printf("%.4f") 保留四位小数。
参考代码
Python 版:
python
#!/usr/bin/env python3
# Author by Rainboy blog: https://rainboylv.com github: https://github.com/rainboylvx
# rbook: -> https://rbook.roj.ac.cn https://rbook2.roj.ac.cn
# rainboy的学习导航网站: https://idx.roj.ac.cn
# create_at: 2026-09-29 17:27
# update_at: 2026-09-29 18:04
import sys
GROWTH = 1.001 # 每年增长 0.1%:当年人口乘以 1 + 0.001
def solve() -> None:
base, years = map(int, sys.stdin.buffer.read().split()) # 人口基数 x、年数 n
people = base * GROWTH**years # 等比数列通项:n 年后人口 = x * 1.001**n
print(f"{people:.4f}")
if __name__ == "__main__":
solve()C++ 版(同一算法):
cpp
/**
* Author by Rainboy blog: https://rainboylv.com github: https://github.com/rainboylvx
* rbook: -> https://rbook.roj.ac.cn https://rbook2.roj.ac.cn
* rainboy的学习导航网站: https://idx.roj.ac.cn
* create_at: 2026-10-05 00:05
* update_at: 2026-10-05 00:05
*/
// main.cpp:人口增长,每年增长 0.1%,求 n 年后的人口,保留 4 位小数。
#include <cstdio>
typedef long long ll;
const double GROWTH = 1.001; // 每年的人口是上一年的 1 + 0.1% 倍
int main() {
ll base, years; // base 为人口基数 x,years 为年数 n
scanf("%lld %lld", &base, &years);
double people = base; // 从第 0 年的人口开始,逐年乘上增长倍率
for (ll i = 1; i <= years; i++) {
people = people * GROWTH;
}
printf("%.4f\n", people);
return 0;
}