1 条题解

  • 1
    @ 2026-2-10 21:26:18

    虽然标签上有递归,但是数据比较水所以可以直接冲过去

    因为我还是用了 voidvoid 函数,所以还是按照函数顺序讲解:

    一:void dri

    我们把 dri 看成 drink 的简写就很好理解了,先让答案加上现在喝掉的汽水的数量,再让空瓶子的数量与其相等,最后让可以喝的汽水数量归零。

    二:void exc

    同上, exc = exchange。把现在可以换的空罐两两一组换成汽水,单个的留下。

    主函数:

    依题意输入 n,mn,m, 满罐汽水(fulful)等于中间量 bobo, 在 fulful 不为零时循环执行 dridriexcexc,输出答案。

    上代码:

    #include<bits/stdc++.h>
    #define ll long long
    using namespace std;
    
    int n, m, bo;
    int ful = 0, emp = 0;
    int ans = 0;
    
    void dri() {
    	ans += ful;
    	emp += ful;
    	ful = 0;
    }
    
    void exc() {
    	while (emp >= 2) {
    		emp -= 2;
    		ful++;
    	}
    }
    
    signed main() {
    	cin.tie(nullptr)->ios::sync_with_stdio(false);
    	cin >> n >> m;
    	bo = (m / n);
    	ful = bo;
    	while (ful) {
    		dri();
    		exc();
    	}
    
    	cout << ans << '\n';
    //by hina.
    }
    
    
    • @ 2026-2-10 21:38:30

      Tips:在代码中,

      bo = bottle;

      ful = full;

      emp = empty;

      dri = drink;

      exc = exchange;

      ans还要解释的话建议回家.

    • @ 2026-6-1 17:48:18

      @ 解释一下ans

  • 1

信息

ID
70
时间
1000ms
内存
16MiB
难度
2
标签
递交数
36
已通过
16
上传者