用 C++ 统计满足不等式 x*x + y*y < n 的不同非负整数对 (x, y) 的个数


给定一个正整数 N。目标是计算满足不等式 x*x + y*y < N 的不同非负整数对的个数。

我们将从 x=0 到 x2 < N,以及 y=0 到 y2 < N 开始。如果任何 x2 + y2 < N,则增加配对计数。

让我们通过示例来理解:

输入 - n=4

输出 - 不同的对= 4

解释 - 对将是 (0,0), (1,1), (0,1), (1,0)。所有这些都满足不等式 x2 + y2 < 4

输入 - n=2

输出 - 不同的对= 3

解释 - 对将是 (0,0), (0,1), (1,0)。所有这些都满足不等式 x2 + y2 < 2

下面程序中使用的方法如下:

  • 整数 N 存储正整数。

  • 函数 countPairs(int n) 以 n 为输入,并返回满足不等式 x2 + y2 < n 的不同非负整数对的个数。

  • count 存储此类对的数量,初始值为 0。

  • 从 i=0 到 i2 < n,另一个循环 j=0 到 j2 < n。

  • 如果 i2 + j2 < n,则 count 加 1。

  • 最后返回 count 作为结果。

示例

实时演示

#include <iostream>
using namespace std;
int countPairs(int n){
   int count = 0;
   for (int i = 0; i*i < n; i++)
      for (int j = 0; j*j < n; j++) //x*x + y*y < n
      if(i*i + j*j < n)
         count++;
   return count;
}
int main(){
   int N=4;
   cout << "Distinct Non-Negative integer pairs count: " << countPairs(N) ;
   return 0;
}

输出

如果我们运行上述代码,它将生成以下输出:

Distinct Non-Negative integer pairs count: 4

更新于:2020年8月13日

172 次查看

开启你的职业生涯

完成课程获得认证

开始学习
广告
© . All rights reserved.