酷代码 AI
菜单

c++、 星宇博士给禾木出了一道数字游戏。 禾木会得到 n n 个整数 a 1 , a 2 , … , a n a 1 ​ ,a 2 ​ ,…,a n ​ 。禾木可以从这些整数中不断挑出两个数字相加,如果它们的和是 3 3 的倍数,则这两个整数就被消除,直到不能再消除数字为止。 请问禾木最多能消除多少对数字? 回答篇幅:简单明了

```cpp #include <iostream> #include <vector> int main() { int n; std::cin >> n; std::vector<int> nums(n); for (int i = 0; i < n; ++i) { std::cin >> nums[i]; } int remainder0 = 0, remainder1 = 0, remainder2 = 0; for (int num : nums) { if (num % 3 == 0) { ++remainder0; } else if (num % 3 == 1) { ++remainder1; } else { ++remainder2; } } int pairs = std::min(remainder1, remainder2) + remainder0 / 2; std::cout << pairs << std::endl; return 0; } ``` 代码解释 1. 输入处理:读取整数个数 `n` 和 `n` 个整数,存储在 `nums` 向量中。 2. 统计余数:遍历 `nums` 向量,统计每个数除以 3 的余数为 0、1、2 的个数,分别存储在 `remainder0`、`remainder1`、`remainder2` 中。 3. 计算消除对数:余数为 1 和余数为 2 的数可以两两配对消除,能配对的数量是 `remainder1` 和 `remainder2` 中的较小值;余数为 0 的数可以两两配对消除,配对数量是 `remainder0 / 2`。将这两部分相加得到最多能消除的对数。 4. 输出结果:输出最多能消除的对数。 [2026-01-27 20:06:03 | AI问答 | 395点数解答]

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