题目描述
假设目前的世界人口有 亿,按照每年 0.1% 的增长速度, 年后将有多少人?
题目链接:B2063 人口增长问题 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
输入格式
一行两个正整数 和 ,之间有一个空格。其中,1≤ ≤100,1≤ ≤100。
输出格式
一行一个数,表示答案。以亿为单位,保留到小数点后 4 位。
解题思路
- 输入数据 和
- 通过数学表达式求得 年后的人数
- 输出结果
解题代码
C代码
#include<stdio.h>
//有关数学的函数都会用math.h的头文件
#include<math.h> //pow函数需要math.h头文件
int main(){
//输入数据
int x,n;
scanf("%d %d",&x,&n);
//计算
double sum = x * pow(1.001,n);//pow(a,b)表示a的b次方
//输出数据
printf("%.4lf",sum);
return 0;
}
C++代码
#include<iostream>
//cmath头文件用于数学计算的函数
#include<cmath>
using namespace std;
int main()
{
int x,n;
cin>>x>>n;
printf("%.4lf",x*pow(1 + 0.001,n));
return 0;
}
Java代码
//导包
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
//输入数据
Scanner scanner = new Scanner(System.in);
int x = scanner.nextInt();
int n = scanner.nextInt();
//求得n年后的人数
//Math类中的静态方法pow(a,b):表示求a的b次幂是多少
double sum = x * Math.pow(1.001,n);
//格式化输出数据:保留四位小数
String string = String.format("%.4f",sum);
System.out.println(string);
}
}
补充知识
有关数学计算的函数如下:
求a的b次方
int a = 2, b = 3;
int c = pow(a,b); //表示a的b次方
取绝对值
//取整数的绝对值
int a = -5;
int b = abs(a);
printf("%d",b); //输出5
//取小数的绝对值
double a = -5.1234;
double b = fabs(a);
print("%lf",b); //输出5.1234
求e的x次方
double a = 1.2;
double b = exp(a); //表示求e的a次方
求非负整数的平方根
int a = 4;
int b = sqrt(a);
printf("%d",b); //输出2
求以自然对数e为底的对数
double a = 13.4;
double b = log(a);
printf("%.3lf",b); //输出2.595
求以10为底的对数
double a = 25;
double b = log10(a);
printf("%.3lf",b); //输出1.398