1 条题解

  • 0
    @ 2026-6-19 10:30:17

    📝 题目大意

    给定整数 AABB1A101 \leq A \leq 100BA0 \leq B \leq A),计算 BA\frac{B}{A} 的值,将其四舍五入到小数点后第 4 位,再以 3 位小数的格式输出(末尾零不可省略)。

    💡 解题思路

    1. 题目分析:数据范围极小(A10A \leq 10),直接使用浮点数运算即可。核心在于格式化输出,要求精确到小数点后 3 位,且末尾零必须保留(如 0.500 不能输出为 0.5)。
    2. 算法推导:题目要求先将 BA\frac{B}{A} 四舍五入到第 4 位小数,再取前 3 位输出。实际上,这一过程等价于直接将 BA\frac{B}{A} 四舍五入到第 3 位小数。因为第 4 位小数的舍入只会影响第 3 位——若第 4 位 5\ge 5,第 3 位进 1;若第 4 位 <5<5,第 3 位不变。这一逻辑与 printf("%.3lf") 直接对第 4 位进行四舍五入完全一致。因此直接使用 printf("%.3lf", B / A) 即可。
    3. 边界与细节
      • B=0B = 0 时,需输出 0.000(末尾零不可省略)。
      • B=AB = A 时,需输出 1.000
      • 使用 double 类型足以保证精度,因为 A10A \leq 10,除法结果不会产生浮点精度问题。

    ⏱️ 复杂度分析

    • 时间复杂度O(1)O(1),仅一次除法与格式化输出。
    • 空间复杂度O(1)O(1),仅使用常数个变量。

    💻 标准代码 (C++)

    #include<bits/stdc++.h>
    using namespace std;
    int main()
    {
        // 读入 A 和 B
        double a,b;scanf("%lf%lf",&a,&b);
        // 计算 B/A,四舍五入保留 3 位小数输出
        // printf 的 %.3lf 会自动对第 4 位小数进行四舍五入
        printf("%.3lf",b/a);
        return 0;
    }
    
    • 1

    信息

    ID
    651
    时间
    1000ms
    内存
    256MiB
    难度
    10
    标签
    (无)
    递交数
    1
    已通过
    1
    上传者