题目链接

疫情死亡率

题目描述

给定感染某种病毒的确诊人数和死亡人数,请计算该种病毒的死亡率。死亡率定义为 (死亡人数 / 确诊人数) * 100

输入描述: 输入一行两个整数,分别表示确诊人数和死亡人数。

输出描述: 输出死亡率,以百分数形式表示,结果保留小数点后三位,并在末尾加上百分号 %

解题思路

本题的核心是进行浮点数除法运算,并按特定格式输出。

  1. 读取输入:读取两个整数,分别代表确诊人数和死亡人数。
  2. 类型转换:为了得到精确的小数结果,在进行除法运算前,必须将整数转换为浮点数(如 doublefloat)。如果直接用两个整数相除,结果会被截断为整数,导致精度丢失。
  3. 计算比率:用浮点数形式的死亡人数除以确诊人数,然后乘以 100,得到百分比数值。
  4. 格式化输出:将计算结果格式化为保留三位小数的字符串,并在末尾拼接上 % 符号。

代码

#include <iostream>
#include <iomanip>

using namespace std;

int main() {
    double confirmed, deaths;
    // 读取两个数
    cin >> confirmed >> deaths;
    // 计算死亡率百分比
    double rate = (deaths / confirmed) * 100;
    // 设置输出格式为固定小数点,保留三位,然后输出结果和百分号
    cout << fixed << setprecision(3) << rate << "%" << endl;
    return 0;
}
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        // 使用 double 类型读取以保证后续计算精度
        double confirmed = sc.nextDouble();
        double deaths = sc.nextDouble();
        // 计算死亡率
        double rate = (deaths / confirmed) * 100;
        // 使用 printf 格式化输出,%.3f 表示保留三位小数的浮点数,%% 表示输出一个 '%'
        System.out.printf("%.3f%%", rate);
    }
}
# 读取输入并转换为浮点数
confirmed, deaths = map(float, input().split())
# 计算死亡率
rate = (deaths / confirmed) * 100
# 使用 f-string 格式化输出,并添加 '%'
print(f"{rate:.3f}%")

算法及复杂度

  • 算法:浮点数运算与格式化输出。
  • 时间复杂度: - 仅包含常数时间的计算和I/O操作。
  • 空间复杂度: - 仅需常数空间存储输入变量。