P1007小核桃数组变换难题:C++代码求解最终两数平方和!
以下是解决该问题的 C++ 代码: ```cpp #include <iostream> #include <vector> const int MOD = 1e9 + 7; // 合并数组直到只剩下两个数字 std::vector<long long> mergeArray(const std::vector<long long>& arr) { std::vector<long long> newArr; for (int i = 0; i < arr.size(); i += 2) { if (i + 1 < arr.size()) { newArr.push_back((arr[i] + arr[i + 1]) % MOD); } else { newArr.push_back(arr[i]); } } return newArr; } // 计算最终两个数字的平方和 long long calculateSquareSum(std::vector<long long> arr) { while (arr.size() > 2) { arr = mergeArray(arr); } long long num1 = arr[0]; long long num2 = arr[1]; return (num1 * num1 % MOD + num2 * num2 % MOD) % MOD; } int main() { long long n, k; std::cin >> n >> k; std::vector<long long> arr; for (int i = 0; i < k; ++i) { long long a, b; std::cin >> a >> b; for (long long j = 0; j < a; ++j) { arr.push_back(b); } } long long result = calculateSquareSum(arr); std::cout << result << std::endl; return 0; } ``` 代码解释: 1. `mergeArray` 函数:该函数接受一个 `std::vector<long long>` 类型的数组,将数组中相邻的元素两两合并,若最后一个元素没有相邻元素,则直接保留。合并后的元素对 `MOD` 取模,避免溢出。 2. `calculateSquareSum` 函数:该函数不断调用 `mergeArray` 函数,直到数组中只剩下两个元素。最后计算这两个元素的平方和,并对 `MOD` 取模。 3. `main` 函数:读取输入的 `n` 和 `k`,然后读取 `k` 组 `a` 和 `b`,将 `a` 个 `b` 加入到数组 `arr` 中。调用 `calculateSquareSum` 函数计算最终结果并输出。 复杂度分析: - 时间复杂度:每次合并数组的时间复杂度为 $O(n)$,最多需要合并 $\log n$ 次,因此总的时间复杂度为 $O(n \log n)$。 - 空间复杂度:主要使用了一个数组来存储元素,空间复杂度为 $O(n)$。 ######[AI问答 | 651点数解答 | 2026-02-07 18:25:02]
- 揭秘!任意各位不同三位数经变换最终如何锁定 495 及编程求解变换次数(字节豆包 | 167点数解答 | 2025-04-22 20:47:58)321
- C++实现计算最少添加数字次数以匹配两个数组元素(字节豆包 | 714点数解答 | 2026-03-08 19:44:54)16
- C++编程揭秘:三位数变换几次能得到495?(字节豆包 | 365点数解答 | 2025-09-26 22:55:13)95
- C++ 实现:小 Q 送礼物之数字取余,开发中这 3 点要小心! (字节豆包 | 321点数解答 | 2025-11-05 18:39:56)112
- C++ 助力禾木:解决两套种树方案合并种树数量难题!(DeepSeek | 315点数解答 | 2025-11-08 15:40:30)47
- C++ 解决禾木种树问题:输入边界、数据结构特性及重复处理要点 (字节豆包 | 419点数解答 | 2025-12-28 15:13:56)78
- C++ 助力禾木解决院子种树数量难题!附代码详解(字节豆包 | 507点数解答 | 2026-01-24 20:11:19)29
- Java顺序表高效删除算法实现与实验验证报告(阿里通义 | 1347点数解答 | 2026-03-26 21:08:33)8
- JavaScript开发:为何 React 的 useState 用数组而非对象?优势揭秘!(阿里通义 | 202点数解答 | 2023-11-09 01:54:01)288
- C#工程师必知:数组、链表、哈希、队列、栈数据结构优缺点大揭秘! (百度文心 | 561点数解答 | 2023-11-09 17:56:30)264
- 补全代码:精准判断变量 a 是否为数组类型( | 115点数解答 | 2024-05-20 21:58:29)332
- Java 实现:从数组提取姓名并匹配同姓人员信息与数量(字节豆包 | 333点数解答 | 2024-09-10 11:58:36)205