📌  相关文章
📜  计算满足不等式x * x + y * y <n的不同非负整数对(x,y)(1)

📅  最后修改于: 2023-12-03 15:12:04.565000             🧑  作者: Mango

题目介绍

本题目需要你设计一个函数,计算满足不等式 $x^2+y^2<n$ 的不同非负整数对 $(x,y)$ 的个数。

函数签名

def calc_pairs(n: int) -> int:
    pass

输入参数

  • n :一个整数,表示需要计算的不等式中的 $n$ 的值 $(0 \leq n \leq 10^9)$

输出结果

  • 一个整数,表示满足不等式 $x^2+y^2<n$ 的不同非负整数对 $(x,y)$ 的个数。

解题思路

首先,我们可以引入二维坐标系,对于一个不等式 $x^2+y^2<n$,可以表示为所有满足条件的 $(x,y)$ 是平面内的一个圆形区域。

因此,我们可以通过枚举 $x$ 和 $y$ 的值,计算其平方和,判断是否小于 $n$,如果小于 $n$,则计数器加一。

因为 $x$ 和 $y$ 的范围都是从 $0$ 开始到 $\sqrt{n}$,所以计算的时间复杂度为 $O(n)$,可以通过本题。

代码示例

def calc_pairs(n: int) -> int:
    count = 0
    for i in range(int(n ** 0.5) + 1):
        for j in range(int(n ** 0.5) + 1):
            if i * i + j * j < n:
                count += 1
    return count

复杂度分析

  • 时间复杂度:$O(n)$
  • 空间复杂度:$O(1)$