当前位置: 首页 > 编程笔记 >

计算三元组(a,b,c)的数量,以使C ++中a ^ 2 + b ^ 2 = c ^ 2和1 <= a <= b <= c <= n

宿建本
2023-03-14
本文向大家介绍计算三元组(a,b,c)的数量,以使C ++中a ^ 2 + b ^ 2 = c ^ 2和1 <= a <= b <= c <= n,包括了计算三元组(a,b,c)的数量,以使C ++中a ^ 2 + b ^ 2 = c ^ 2和1 <= a <= b <= c <= n的使用技巧和注意事项,需要的朋友参考一下

我们得到一个整数n。目标是找到满足条件的三元组(3个数字一组)-

  • a 2 + b 2 = c 2

  • 1 <= a <= b <= c <= n

我们将通过为1 <= a <= n和1 <= b <= n的值运行两个循环来做到这一点。如果同时满足条件1和2,则计算c(c = sqrt(a2 + b2))并递增计数。

让我们通过示例来理解。

输入-N = 5

输出-三胞胎数量-1

说明-

for a=3, b=4 and c=5 both conditions are met.

输入-N = 3

输出-三胞胎数量-0

说明-

没有满足条件1和2的三胞胎。

以下程序中使用的方法如下

  • 整数N存储范围[1,N]的最后一个限制。

  • 函数countTriplets(int n)取n并返回满足以下条件的三元组的计数:a 2 + b 2 = c 2且1 <= a <= b <= c <= n

  • 可变计数存储此类三元组的数量,最初为0。

  • 变量和存储a和b的平方和。

  • 从a = 1到n和b = a到n,计算sum = a * a + b * b和c作为和的平方根(sqrt(sum))。

  • 如果计算出的c具有这样的值,即c * c == sum和b <= c && c <= n(同时满足条件1和2)。

  • 当电流a,b,c满足两个条件时,增量计数。

  • 执行此操作直到a = n和b = n。最后,count将具有许多满足条件的三元组。

  • 返回计数作为所需结果。

示例

#include <bits/stdc++++.h>
using namespace std;
int countTriplets(int n){
   int count = 0;
   int a,b,c;
   a=b=c=1;
   int sum=0;
   for (a = 1; a <= n; a++) //1<=a<=n{
      for (b = a; b <= n; b++) //1<=a<=b<=n{
         sum = a*a + b*b; //a^2 + b^2 =c^2
         c = sqrt(sum);
         if (c * c == sum && b<=c && c<=n) //check 1<=a<=b<=c<=n{
            count++;
            cout<<endl<<"a :"<<a<<" b :"<<b<<" c :"<<c; //to print triplets
         }
      }
   }
   return count;
}
int main(){
   int N = 15;
   cout <<endl<< "Number of triplets : "<<countTriplets(N);
   return 0;
}

输出结果

如果我们运行上面的代码,它将生成以下输出-

Number of triplets :
a :3 b :4 c :5
a :5 b :12 c :13
a :6 b :8 c :10
a :9 b :12 c :154
Number of triplets : 4
 类似资料:
  • 本文向大家介绍在C ++中找到2 ^(2 ^ A)%B,包括了在C ++中找到2 ^(2 ^ A)%B的使用技巧和注意事项,需要的朋友参考一下 在本教程中,我们将编写一个程序来计算等式2 ^(2 ^ A)%B。 我们将使用递归函数找到方程的值。让我们看看解决问题的步骤。 编写一个带有2个参数A和B的递归函数。 如果A为1,则将4%B返回为2 ^(2 ^ 1)%B = 4%B. 否则用A-1和b递归

  • 本文向大家介绍题目 info: { a.b: 1, c: 2 }, 转化为 info2:{ a: { b: 1 }, c: 2 }相关面试题,主要包含被问及题目 info: { a.b: 1, c: 2 }, 转化为 info2:{ a: { b: 1 }, c: 2 }时的应答技巧和注意事项,需要的朋友参考一下 No description provided.

  • 本文向大家介绍在数组中找到四个元素a,b,c和d,以便在C ++中a + b = c + d,包括了在数组中找到四个元素a,b,c和d,以便在C ++中a + b = c + d的使用技巧和注意事项,需要的朋友参考一下 假设我们有一个整数列表。我们的任务是找到四个不同的整数,分别为(a,b)和(c,d)两对,这样a + b = c + d。如果有多个答案,则仅打印一个。假设数组元素像:A = [7

  • 本文向大家介绍 a = [1,2,3] 和 b = [(1),(2),(3) ] 以及 b = [(1,),(2,),(3,) ] 的区别?相关面试题,主要包含被问及 a = [1,2,3] 和 b = [(1),(2),(3) ] 以及 b = [(1,),(2,),(3,) ] 的区别?时的应答技巧和注意事项,需要的朋友参考一下 补充:    

  • 题目描述 这是今晚阿里巴巴笔试编程题的其中一道。原题描述如下: 对于任何整数 $x$,一定存在整数对 $(a, b)$,使得 $x \oplus a \oplus b$ 最大。其中,$\oplus$ 表示异或,$0≤x,a,b≤2^{31}-1$。给定一个 $x$,输出使得 $\vert a-b\vert $ 最小的 $(a, b)$ 对的个数。 示例: 输入 0,输出 2 输入 100,输出 1

  • 我有两个双向量。双的值在-1000到1000之间。 两个向量包含相同的数字,但顺序不同。 例如 假设通过以下方式求和,是否可以保证向量1的和与向量2的和完全相等: 我担心双重不精确。