1 条题解

  • 0
    @ 2025-4-10 21:18:37

    解题思路

    初始时彼得有n根香烟,他抽完这n根香烟后会得到n个烟蒂。用得到的烟蒂除以k,得到的商就是可以卷成的新香烟数量,余数是卷完新香烟后剩余的烟蒂数量。 新卷成的香烟抽完后又会产生新的烟蒂,将这些新烟蒂与之前剩余的烟蒂相加,继续按照上述方法卷新香烟,直到剩余烟蒂数量小于k,无法再卷成新香烟为止。最终彼得能拥有的香烟数量就是初始香烟数量加上用烟蒂卷成的香烟数量。

    代码

    #include <iostream>
    using namespace std;
    
    int main() {
        int n, k;
        while (cin >> n >> k) {
            int total = n;  // 记录总共能拥有的香烟数量
            int butts = n;  // 记录当前拥有的烟蒂数量
    
            while (butts >= k) {
                int newCigarettes = butts / k;  // 计算可以卷成的新香烟数量
                total += newCigarettes;  // 将新香烟数量加到总数中
                butts = butts % k + newCigarettes;  // 更新剩余烟蒂数量
            }
    
            cout << total << endl;
        }
        return 0;
    }
    
    • 1

    信息

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