1 条题解

  • 0
    @ 2025-9-22 21:35:56

    这是一个典型的模拟问题,我们需要严格按照题目描述的操作规则模拟K次操作过程。

    1. 初始化两个杯子的水量为0

    2. 循环K次,每次根据当前状态执行相应的操作:

    • 检查玻璃杯是否已满,如果是则清空

    • 否则检查马克杯是否为空,如果是则注满

    • 否则将马克杯的水倒入玻璃杯(注意倒水量的计算)

    #include <iostream>
    using namespace std;
    
    int main() {
        int K, G, M;
        cin >> K >> G >> M;
        
        int glass = 0;
        int mug = 0;
        
        for (int i = 0; i < K; i++) {
            if (glass == G) {
                glass = 0;
            } else if (mug == 0) {
                mug = M;
            } else {
                if (mug <= G - glass) {
                    glass += mug;
                    mug = 0;
                } else {
                    glass = G;
                    mug -= G - glass;
                }
            }
        }
        
        cout << glass << " " << mug << endl;
        return 0;
    }
    

    信息

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