2025年9月GESP真题及题解 (C++八级): 最短距离
题目描述
给定正整数 $p, q$ 以及常数 $N = 10^{18}$。
解题思路
本题涉及大数处理与最优化问题。由于 $N$ 高达 $10^{18}$,直接使用暴力枚举会导致超时,需采用数学推导或高效算法(如二分查找、数论性质等)进行求解。在 C++ 中需注意使用 long long 类型防止溢出,并根据具体题意设计时间复杂度为 $O(\log N)$ 或更优的解法。
注意事项
- 输入输出效率:建议使用
cin.tie(NULL)加速 IO。 - 精度控制:涉及浮点数时注意精度误差。
- 边界条件:检查 $p, q$ 的最小值情况。
参考代码结构
#include <iostream>
using namespace std;
int main() {
// 优化 IO 操作
ios::sync_with_stdio(false);
cin.tie(nullptr);
long long p, q;
// 读取输入
if (!(cin >> p >> q)) return 0;
// 此处根据具体题意实现核心逻辑
// 注意处理 10^18 范围内的数据运算
return 0;
}
总结
解决此类大数相关竞赛题目时,应优先考虑算法的时间复杂度限制,避免不必要的循环嵌套。同时,熟练掌握 C++ 标准库中的数值处理函数有助于提高开发效率。


