GESP C++ 真题 · 逐题精解
首页C++八级真题 › 2025年9月 › 第12题

GESP 2025年9月 C++八级 单选题 第12题

C++八级单选题2025年9月第12题

所属知识点:各类算法复杂度 难度要求:掌握 考频:中频

下面 count_triple 函数(枚举本原勾股数)的时间复杂度为:
int gcd(int m, int n) { if (m == 0) return n; return gcd(n % m, m); }
int count_triple(int n) {
    int cnt = 0;
    for (int v = 1; v * v * 4 <= n; v++)
        for (int u = v + 1; u * (u + v) * 2 <= n; u += 2)
            if (gcd(u, v) == 1) {
                int a = u*u-v*v, b = u*v*2, c = u*u+v*v;
                cnt += n / (a + b + c);
            }
    return cnt;
}

正确答案:D

题目解析
外层 v 到 O(√n)、内层 u 到 O(√n)、每次 gcd 为 O(log n),整体约 O(n·log n),选 D。

想系统刷完 GESP C++ 1~8 级真题,并查看每道题的逐题精讲?

进入 GESPPASS 开始练习