酷代码 AI
菜单
服务商

c++奥兹玛之心发来的信号是一串蓝色数字,和一个单独的红色数字。小队需要编写程序,计算一个新的数字发送给奥兹玛之心。程序需要依次检查每一个蓝色数字。先检查蓝色数字是不是红色数字的3倍,如果是,就把蓝色数字乘以3计入总和。否则,再检查蓝色数字是不是红色数字的5倍,如果是,就把蓝色数字乘以5计入总和。如果也不是红色数字的5倍,就再检查蓝色数字是不是红色数字的7倍,如果是,就把蓝色数字乘以7计入总和。如果以上都不满足,就把蓝色数字乘以11计入总和。

以下是实现该功能的 C++ 代码: ```cpp #include <iostream> #include <vector> // 计算最终总和的函数 int calculateSum(const std::vector<int>& blueNumbers, int redNumber) { int sum = 0; // 遍历每一个蓝色数字 for (int blueNum : blueNumbers) { if (blueNum == redNumber * 3) { // 如果蓝色数字是红色数字的3倍,将蓝色数字乘以3计入总和 sum += blueNum * 3; } else if (blueNum == redNumber * 5) { // 如果蓝色数字是红色数字的5倍,将蓝色数字乘以5计入总和 sum += blueNum * 5; } else if (blueNum == redNumber * 7) { // 如果蓝色数字是红色数字的7倍,将蓝色数字乘以7计入总和 sum += blueNum * 7; } else { // 以上条件都不满足,将蓝色数字乘以11计入总和 sum += blueNum * 11; } } return sum; } int main() { int redNumber; std::vector<int> blueNumbers; int blueNum; // 输入红色数字 std::cout << "请输入单独的红色数字: "; std::cin >> redNumber; // 输入蓝色数字,输入非数字字符结束输入 std::cout << "请依次输入蓝色数字,输入非数字字符结束输入: "; while (std::cin >> blueNum) { blueNumbers.push_back(blueNum); } // 清除输入流的错误状态 std::cin.clear(); std::cin.ignore(10000, '\n'); // 计算总和 int result = calculateSum(blueNumbers, redNumber); // 输出结果 std::cout << "需要发送给奥兹玛之心的新数字是: " << result << std::endl; return 0; } ``` 代码说明: 1. `calculateSum` 函数:该函数接受一个存储蓝色数字的向量 `blueNumbers` 和一个红色数字 `redNumber` 作为参数。函数内部使用 `for` 循环遍历每一个蓝色数字,根据题目要求的条件判断该蓝色数字应该乘以多少,然后将结果累加到总和 `sum` 中,最后返回总和。 2. `main` 函数:首先,程序会提示用户输入单独的红色数字。然后,程序会提示用户依次输入蓝色数字,输入非数字字符时结束输入。接着,程序会调用 `calculateSum` 函数计算最终的总和,并将结果输出。 复杂度分析: - 时间复杂度:$O(n)$,其中 $n$ 是蓝色数字的数量。因为只需要遍历一次蓝色数字。 - 空间复杂度:$O(n)$,主要用于存储蓝色数字的向量。 [2026-01-02 19:23:25 | AI问答 | 682点数解答]

相关提问
发财导航,免费问AI
实用工具查看更多