C++ 代码实现蛋糕切半算法 - 最少剩余蛋糕大小质量数
使用 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;
}
代码解释:
- 首先输入蛋糕的数量 n 和每个蛋糕的大小质量指数序列 a。
- 遍历每个蛋糕,如果蛋糕的大小质量指数是偶数,就将其加到总和 total 中。
- 使用
while循环,只要蛋糕的大小质量指数是偶数,就将其切半并吃掉一半,并将切完后的蛋糕大小质量指数也加到 total 中。 - 最后输出 total,表示最少剩下的蛋糕大小质量数。
注意:
- 这只是一个示例代码,根据输入的蛋糕数量和大小质量指数,计算最少剩下的蛋糕大小质量数。
- 你可以将代码复制到本地的 C++ 编译器中并运行,以获得你所需的输出结果。
原文地址: https://www.cveoy.top/t/topic/cnpa 著作权归作者所有。请勿转载和采集!