使用 C++ 代码计算最少剩余蛋糕大小质量数

假设你有一个贪婪的朋友,他喜欢将偶数大小质量的蛋糕切半,切完还会自己吃掉切掉的一半 (假装他都能吃得下),只要还有偶数大小质量的蛋糕在,他就不会停止犯贱…

问题: 给定一个蛋糕的大小质量指数序列,计算最少剩下的蛋糕大小质量数。

输入格式: 第一行输入一个整数 n 代表有 n 块蛋糕 (1≤n≤106) (假装他家有这么多蛋糕) 第二行输入蛋糕的大小质量指数序列 a(1≤ai≤105)。

输出格式: 输出一个整数, 代表最少剩下的蛋糕大小质量数.

样例:

输入:

5
1 2 3 4 5

输出:

11

代码:

#include <iostream>
#include <vector>
#include <algorithm>

int main() {
    int n;
    std::cout << "请输入蛋糕的数量n:" << std::endl;
    std::cin >> n;

    std::vector<int> cakes(n);
    std::cout << "请输入每个蛋糕的大小质量指数序列a:" << std::endl;
    for (int i = 0; i < n; ++i) {
        std::cin >> cakes[i];
    }

    int total = 0;
    for (int i = 0; i < n; ++i) {
        if (cakes[i] % 2 == 0) {
            total += cakes[i];
            while (cakes[i] % 2 == 0) {
                cakes[i] /= 2;
                total += cakes[i];
            }
        }
    }

    std::cout << "最少剩下的蛋糕大小质量数:" << total << std::endl;

    return 0;
}

代码解释:

  1. 首先输入蛋糕的数量 n 和每个蛋糕的大小质量指数序列 a。
  2. 遍历每个蛋糕,如果蛋糕的大小质量指数是偶数,就将其加到总和 total 中。
  3. 使用 while 循环,只要蛋糕的大小质量指数是偶数,就将其切半并吃掉一半,并将切完后的蛋糕大小质量指数也加到 total 中。
  4. 最后输出 total,表示最少剩下的蛋糕大小质量数。

注意:

  • 这只是一个示例代码,根据输入的蛋糕数量和大小质量指数,计算最少剩下的蛋糕大小质量数。
  • 你可以将代码复制到本地的 C++ 编译器中并运行,以获得你所需的输出结果。
C++ 代码实现蛋糕切半算法 - 最少剩余蛋糕大小质量数

原文地址: https://www.cveoy.top/t/topic/cnpa 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录