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

GESP 2025年9月 C++七级 单选题 第14题

C++七级单选题2025年9月第14题

所属知识点:复杂度分析(递归/各类算法) 难度要求:— 考频:—

下面 count_triple 函数的时间复杂度为(用欧几里得公式枚举勾股数):
int gcd(int m,int n){ return m==0?n: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) {  // Euclid 公式生成本原勾股数
        int a=u*u-v*v, b=u*v*2, c=u*u+v*v;
        cnt += n/(a+b+c);
      }
  return cnt;
}

正确答案:C

题目解析

外层 v 满足 4v²≤n 即 v=O(√n),内层 u 满足 2u(u+v………

完整解析为会员内容二级及以上的逐题精讲需开通 VIP。一级解析全部免费。前往 GESPPASS 解锁

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

进入 GESPPASS 开始练习