首页 > 试题广场 >

疫情死亡率

[编程题]疫情死亡率
  • 热度指数:71671 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
\hspace{15pt}某种病毒正在人群中肆虐,你作为龙国最强病毒专家的最强助手,需要帮助他分析目前病毒的死亡率。
\hspace{15pt}给定感染某种病毒的确诊人数 c 与死亡人数 d,请计算该种病毒的死亡率,死亡率定义为 \tfrac{d}{c}\times100\%

输入描述:
\hspace{15pt}输入一行两个整数 c,d \left(1 \leqq d \leqq c \leqq 10^7\right),分别表示某种病毒造成的确诊人数和死亡人数。


输出描述:
\hspace{15pt}输出死亡率,以百分数形式表示(末尾加上百分号 \%)。

\hspace{15pt}由于实数的计算存在误差,当误差的量级不超过 10^{-3} 时,您的答案都将被接受。具体来说,设您的答案为 a,标准答案为 b,当且仅当 \tfrac{|a-b|}{\max(1,|b|)}\leq 10^{-3} 时,您的答案将被接受。
示例1

输入

10433 280

输出

2.684%
示例2

输入

929100 922311

输出

99.269%

备注:
本题已于下方时间节点更新,请注意题解时效性:
1. 2025-06-03 优化题面文本与格式。
2. 2025-11-19 增加浮点数输出误差检测;降低输入数据范围。新增若干组测试数据。
import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        //确诊人数
        int c=sc.nextInt();
        //死亡人数
        int d=sc.nextInt();
        //保留精度百分数形式表示
        double deathRate=(d*100.0)/c;
        System.out.printf("%.3f%%",deathRate);
       
}
}
发表于 2025-10-30 11:10:22 回复(0)
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        while (in.hasNextInt()) {
            BigDecimal aa = new BigDecimal(in.nextInt());
            BigDecimal bb = new BigDecimal(in.nextInt());
            BigDecimal cc = bb.multiply(new BigDecimal(100)).divide(aa,3, RoundingMode.HALF_UP);
            System.out.println(cc+"%");
        }
    }


发表于 2025-09-29 22:45:47 回复(0)
import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int a = in.nextInt();
        int b = in.nextInt();

        // 关键修正:先将 b 转为浮点数(*100.0),再除以 a,避免整数除法
        double c = (b*100.0)/a;

        System.out.printf("%.3f%%", c);

        in.close();
    }
}

总结:为什么用 double?

  1. 精度足够:double 的 15-17 位有效数字能覆盖题目中 10⁹ 级别的数值计算,避免精度丢失,确保最终结果符合 “保留三位小数” 的误差要求;
  2. 使用自然Java 中 100.0 默认是 double,无需额外加后缀,避免类型转换问题;
  3. 通用性强实际开发中,除非有明确的内存限制(如海量数据存储),否则优先用 double,它是浮点数计算的 “默认首选”,能应对绝大多数场景

整数除法的特性

在 Java 中,当两个 int 类型的变量进行除法运算(b/a)时,会执行 整数除法—— 即只保留商的整数部分,丢弃小数部分
  • 整数除法(int/int)会丢失小数部分,导致计算结果为 0。
  • 必须先通过 *100.0 或 *1.0 将整数转换为浮点数,确保除法为浮点数运算,才能得到正确的小数结果。



发表于 2025-09-20 12:45:47 回复(0)
        Scanner in = new Scanner(System.in);
        int c = in.nextInt();
        int d = in.nextInt();
        double s = 100.0*d/c;
        System.out.println(String.format("%.3f%%",s));

发表于 2025-08-07 15:13:24 回复(0)
Scanner in = new Scanner(System.in);
double c = in.nextDouble();
double d = in.nextDouble();
System.out.println(String.format("%.3f%%",d/c*100));
发表于 2025-08-06 02:32:49 回复(0)
import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
long c = sc.nextLong();
long d = sc.nextLong();
sc.close();

double rate = (double)d / c * 100.0;

System.out.printf("%.3f%%", rate);
}
}
发表于 2025-07-05 17:37:29 回复(0)