题解:洛谷 P5706 再分肥宅水

【题目来源】

洛谷:P5706 【深基2.例8】再分肥宅水 - 洛谷

【题目描述】

现在有 \(t\) 毫升肥宅快乐水,要均分给 \(n\) 名同学。每名同学需要 \(2\) 个杯子。现在想知道每名同学可以获得多少毫升饮料(严格精确到小数点后 \(3\) 位),以及一共需要多少个杯子。

【输入】

输入一个实数 \(t\) 和一个正整数 \(n\),使用空格隔开。

【输出】

输出两行。

第一行输出一个三位小数,表示可以获得多少毫升饮料。第二行输出一个正整数,表示一共需要多少个杯子。

【输入样例】

500.0 3

【输出样例】

166.667
6

【核心思想】

  1. 问题分析:给定 \(t\) 毫升肥宅快乐水和 \(n\) 名同学,要求均分。每名同学需要 \(2\) 个杯子。求每名同学获得的饮料量(精确到小数点后 \(3\) 位)和总杯子数。

  2. 算法选择

    • 直接计算:饮料量 = \(t / n\),杯子数 = \(n \times 2\)
    • 格式化输出:使用 printf%.3f 控制浮点数保留三位小数
  3. 关键步骤

    • 读入数据cin >> t >> n 读取总量和人数
    • 计算平均值avg = t / n 浮点数除法
    • 计算杯子数sum = n * 2 整数乘法
    • 格式化输出printf("%.3f\n%d", avg, sum)
      • %.3f:保留三位小数输出 avg
      • \n:换行
      • %d:输出整数 sum
  4. 时间/空间复杂度

    • 时间复杂度:\(O(1)\),单次除法和乘法
    • 空间复杂度:\(O(1)\),仅需四个变量
  5. 格式化输出的核心思想

    • 浮点精度控制printf%.3f 自动进行四舍五入到三位小数,无需手动处理
    • 混合类型输出printf 支持同一格式字符串中多种类型占位符,简化多行输出
    • 问题分解:将"均分"和"杯子数"两个独立计算分别处理,无耦合关系
    • 适用于基础算术运算、格式化输出类入门问题

【算法标签】

入门 #模拟

【代码详解】

#include <bits/stdc++.h>  // 包含标准库头文件(万能头文件)
#include <iomanip>         // 包含输入输出操纵符库(用于格式化输出)
using namespace std;       // 使用标准命名空间

/**
 * 主函数 - 程序入口
 * @return 程序执行状态码(0表示成功)
 */
int main()
{
    double t, avg;         // 定义双精度浮点数:总量t,平均值avg
    int n, sum;            // 定义整型变量:份数n,双倍份数sum

    cin >> t >> n;         // 从标准输入读取总量t和份数n

    avg = t / n;           // 计算每份的平均值(浮点数除法)
    sum = n * 2;           // 计算双倍份数(整数乘法)

    // 输出结果(使用printf实现格式化输出)
    printf("%.3f\n%d", avg, sum);  // %.3f表示保留3位小数,\n换行,%d输出整数

    return 0;             // 返回程序执行成功状态码
}

【运行结果】

500.0 3
166.667
6
posted @ 2026-08-05 15:46  团爸讲算法  阅读(15)  评论(0)    收藏  举报