我们得到一个整数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的和完全相等: 我担心双重不精确。