Dada una array de enteros, escriba una función que devuelva verdadero si hay un triplete (a, b, c) que satisface a 2 + b 2 = c 2 .
Ejemplo :
C++
// A C++ program that returns true if there is a Pythagorean // Triplet in a given array. #include <iostream> using namespace std; // Returns true if there is Pythagorean triplet in ar[0..n-1] bool isTriplet(int ar[], int n) { for (int i = 0; i < n; i++) { for (int j = i + 1; j < n; j++) { for (int k = j + 1; k < n; k++) { // Calculate square of array elements int x = ar[i] * ar[i], y = ar[j] * ar[j], z = ar[k] * ar[k]; if (x == y + z || y == x + z || z == x + y) return true; } } } // If we reach here, no triplet found return false; } /* Driver program to test above function */ int main() { int ar[] = { 3, 1, 4, 6, 5 }; int ar_size = sizeof(ar) / sizeof(ar[0]); isTriplet(ar, ar_size) ? cout << "Yes" : cout << "No"; return 0; }
Java
// A Java program that returns true if there is a Pythagorean // Triplet in a given array. import java.io.*; class PythagoreanTriplet { // Returns true if there is Pythagorean triplet in ar[0..n-1] static boolean isTriplet(int ar[], int n) { for (int i = 0; i < n; i++) { for (int j = i + 1; j < n; j++) { for (int k = j + 1; k < n; k++) { // Calculate square of array elements int x = ar[i] * ar[i], y = ar[j] * ar[j], z = ar[k] * ar[k]; if (x == y + z || y == x + z || z == x + y) return true; } } } // If we reach here, no triplet found return false; } // Driver program to test above function public static void main(String[] args) { int ar[] = { 3, 1, 4, 6, 5 }; int ar_size = ar.length; if (isTriplet(ar, ar_size) == true) System.out.println("Yes"); else System.out.println("No"); } } /* This code is contributed by Devesh Agrawal */
Python3
# Python program to check if there is Pythagorean # triplet in given array # Returns true if there is Pythagorean # triplet in ar[0..n-1] def isTriplet(ar, n): j = 0 for i in range(n - 2): for k in range(j + 1, n): for j in range(i + 1, n - 1): # Calculate square of array elements x = ar[i]*ar[i] y = ar[j]*ar[j] z = ar[k]*ar[k] if (x == y + z or y == x + z or z == x + y): return 1 # If we reach here, no triplet found return 0 # Driver program to test above function ar = [3, 1, 4, 6, 5] ar_size = len(ar) if(isTriplet(ar, ar_size)): print("Yes") else: print("No") # This code is contributed by Aditi Sharma
C#
// A C# program that returns true // if there is a Pythagorean // Triplet in a given array. using System; class GFG { // Returns true if there is Pythagorean // triplet in ar[0..n-1] static bool isTriplet(int[] ar, int n) { for (int i = 0; i < n; i++) { for (int j = i + 1; j < n; j++) { for (int k = j + 1; k < n; k++) { // Calculate square of array elements int x = ar[i] * ar[i], y = ar[j] * ar[j], z = ar[k] * ar[k]; if (x == y + z || y == x + z || z == x + y) return true; } } } // If we reach here, // no triplet found return false; } // Driver code public static void Main() { int[] ar = { 3, 1, 4, 6, 5 }; int ar_size = ar.Length; if (isTriplet(ar, ar_size) == true) Console.WriteLine("Yes"); else Console.WriteLine("No"); } } // This code is contributed by shiv_bhakt.
PHP
<?php // A PHP program that returns // true if there is a Pythagorean // Triplet in a given array. // Returns true if there is // Pythagorean triplet in // ar[0..n-1] function isTriplet($ar, $n) { for ($i = 0; $i < $n; $i++) { for ($j = $i + 1; $j < $n; $j++) { for ($k = $j + 1; $k < $n; $k++) { // Calculate square of // array elements $x = $ar[$i] * $ar[$i]; $y = $ar[$j] * $ar[$j]; $z = $ar[$k] * $ar[$k]; if ($x == $y + $z or $y == $x + $z or $z == $x + $y) return true; } } } // If we reach here, // no triplet found return false; } // Driver Code $ar = array(3, 1, 4, 6, 5); $ar_size = count($ar); if(isTriplet($ar, $ar_size)) echo "Yes"; else echo "No"; // This code is contributed by anuj_67. ?>
Javascript
<script> // A Javascript program that returns // true if there is a Pythagorean // Triplet in a given array. // Returns true if there is // Pythagorean triplet in ar[0..n-1] function isTriplet( ar, n) { for (let i = 0; i < n; i++) { for (let j = i + 1; j < n; j++) { for (let k = j + 1; k < n; k++) { // Calculate square of array elements let x = ar[i] * ar[i], y = ar[j] * ar[j], z = ar[k] * ar[k]; if (x == y + z || y == x + z || z == x + y) return true; } } } // If we reach here, no triplet found return false; } // driver code let ar = [ 3, 1, 4, 6, 5 ]; let ar_size = ar.length; if (isTriplet(ar, ar_size) == true) document.write("Yes"); else document.write("No"); </script>
C++
// A C++ program that returns true if there is a Pythagorean // Triplet in a given array. #include <algorithm> #include <iostream> using namespace std; // Returns true if there is a triplet with following property // A[i]*A[i] = A[j]*A[j] + A[k]*[k] // Note that this function modifies given array bool isTriplet(int arr[], int n) { // Square array elements for (int i = 0; i < n; i++) arr[i] = arr[i] * arr[i]; // Sort array elements sort(arr, arr + n); // Now fix one element one by one and find the other two // elements for (int i = n - 1; i >= 2; i--) { // To find the other two elements, start two index // variables from two corners of the array and move // them toward each other int l = 0; // index of the first element in arr[0..i-1] int r = i - 1; // index of the last element in arr[0..i-1] while (l < r) { // A triplet found if (arr[l] + arr[r] == arr[i]) return true; // Else either move 'l' or 'r' (arr[l] + arr[r] < arr[i]) ? l++ : r--; } } // If we reach here, then no triplet found return false; } /* Driver program to test above function */ int main() { int arr[] = { 3, 1, 4, 6, 5 }; int arr_size = sizeof(arr) / sizeof(arr[0]); isTriplet(arr, arr_size) ? cout << "Yes" : cout << "No"; return 0; }
Java
// A Java program that returns true if there is a Pythagorean // Triplet in a given array. import java.io.*; import java.util.*; class PythagoreanTriplet { // Returns true if there is a triplet with following property // A[i]*A[i] = A[j]*A[j] + A[k]*[k] // Note that this function modifies given array static boolean isTriplet(int arr[], int n) { // Square array elements for (int i = 0; i < n; i++) arr[i] = arr[i] * arr[i]; // Sort array elements Arrays.sort(arr); // Now fix one element one by one and find the other two // elements for (int i = n - 1; i >= 2; i--) { // To find the other two elements, start two index // variables from two corners of the array and move // them toward each other int l = 0; // index of the first element in arr[0..i-1] int r = i - 1; // index of the last element in arr[0..i-1] while (l < r) { // A triplet found if (arr[l] + arr[r] == arr[i]) return true; // Else either move 'l' or 'r' if (arr[l] + arr[r] < arr[i]) l++; else r--; } } // If we reach here, then no triplet found return false; } // Driver program to test above function public static void main(String[] args) { int arr[] = { 3, 1, 4, 6, 5 }; int arr_size = arr.length; if (isTriplet(arr, arr_size) == true) System.out.println("Yes"); else System.out.println("No"); } } /*This code is contributed by Devesh Agrawal*/
Python3
# Python program that returns true if there is # a Pythagorean Triplet in a given array. # Returns true if there is Pythagorean # triplet in ar[0..n-1] def isTriplet(ar, n): # Square all the elements for i in range(n): ar[i] = ar[i] * ar[i] # sort array elements ar.sort() # fix one element # and find other two # i goes from n - 1 to 2 for i in range(n-1, 1, -1): # start two index variables from # two corners of the array and # move them toward each other j = 0 k = i - 1 while (j < k): # A triplet found if (ar[j] + ar[k] == ar[i]): return True else: if (ar[j] + ar[k] < ar[i]): j = j + 1 else: k = k - 1 # If we reach here, then no triplet found return False # Driver program to test above function */ ar = [3, 1, 4, 6, 5] ar_size = len(ar) if(isTriplet(ar, ar_size)): print("Yes") else: print("No") # This code is contributed by Aditi Sharma
C#
// C# program that returns true // if there is a Pythagorean // Triplet in a given array. using System; class GFG { // Returns true if there is a triplet // with following property A[i]*A[i] // = A[j]*A[j]+ A[k]*[k] Note that // this function modifies given array static bool isTriplet(int[] arr, int n) { // Square array elements for (int i = 0; i < n; i++) arr[i] = arr[i] * arr[i]; // Sort array elements Array.Sort(arr); // Now fix one element one by one // and find the other two elements for (int i = n - 1; i >= 2; i--) { // To find the other two elements, // start two index variables from // two corners of the array and // move them toward each other // index of the first element // in arr[0..i-1] int l = 0; // index of the last element // in arr[0..i - 1] int r = i - 1; while (l < r) { // A triplet found if (arr[l] + arr[r] == arr[i]) return true; // Else either move 'l' or 'r' if (arr[l] + arr[r] < arr[i]) l++; else r--; } } // If we reach here, then // no triplet found return false; } // Driver Code public static void Main() { int[] arr = { 3, 1, 4, 6, 5 }; int arr_size = arr.Length; if (isTriplet(arr, arr_size) == true) Console.WriteLine("Yes"); else Console.WriteLine("No"); } } // This code is contributed by shiv_bhakt.
PHP
<?php // A PHP program that returns // true if there is a Pythagorean // Triplet in a given array. // Returns true if there is a // triplet with following property // A[i]*A[i] = A[j]*A[j] + A[k]*[k] // Note that this function modifies // given array function isTriplet( $arr, $n) { // Square array elements for ($i = 0; $i < $n; $i++) $arr[$i] = $arr[$i] * $arr[$i]; // Sort array elements sort($arr); // Now fix one element one by // one and find the other two // elements for($i = $n - 1; $i >= 2; $i--) { // To find the other two // elements, start two index // variables from two corners // of the array and move // them toward each other // index of the first element // in arr[0..i-1] $l = 0; // index of the last element // in arr[0..i-1] $r = $i - 1; while ($l < $r) { // A triplet found if ($arr[$l] + $arr[$r] == $arr[$i]) return true; // Else either move 'l' or 'r' ($arr[$l] + $arr[$r] < $arr[$i])? $l++: $r--; } } // If we reach here, // then no triplet found return false; } // Driver Code $arr = array(3, 1, 4, 6, 5); $arr_size = count($arr); if(isTriplet($arr, $arr_size)) echo "Yes"; else echo "No"; // This code is contributed by anuj_67. ?>
Javascript
<script> // A javascript program that returns true if there is a Pythagorean // Triplet in a given array. // Returns true if there is a triplet with following property // A[i]*A[i] = A[j]*A[j] + A[k]*[k] // Note that this function modifies given array function isTriplet(arr , n) { // Square array elements for (i = 0; i < n; i++) arr[i] = arr[i] * arr[i]; // Sort array elements arr.sort((a,b)=>a-b); // Now fix one element one by one and find the other two // elements for (i = n - 1; i >= 2; i--) { // To find the other two elements, start two index // variables from two corners of the array and move // them toward each other var l = 0; // index of the first element in arr[0..i-1] var r = i - 1; // index of the last element in arr[0..i-1] while (l < r) { // A triplet found if (arr[l] + arr[r] == arr[i]) return true; // Else either move 'l' or 'r' if (arr[l] + arr[r] < arr[i]) l++; else r--; } } // If we reach here, then no triplet found return false; } // Driver program to test above function var arr = [ 3, 1, 4, 6, 5 ]; var arr_size = arr.length; if (isTriplet(arr, arr_size) == true) document.write("Yes"); else document.write("No"); // This code is contributed by umadevi9616 </script>
C++
#include <bits/stdc++.h> using namespace std; // Function to check if the // Pythagorean triplet exists or not bool checkTriplet(int arr[], int n) { int maximum = 0; // Find the maximum element for (int i = 0; i < n; i++) { maximum = max(maximum, arr[i]); } // Hashing array int hash[maximum + 1] = { 0 }; // Increase the count of array elements // in hash table for (int i = 0; i < n; i++) hash[arr[i]]++; // Iterate for all possible a for (int i = 1; i < maximum + 1; i++) { // If a is not there if (hash[i] == 0) continue; // Iterate for all possible b for (int j = 1; j < maximum + 1; j++) { // If a and b are same and there is only one a // or if there is no b in original array if ((i == j && hash[i] == 1) || hash[j] == 0) continue; // Find c int val = sqrt(i * i + j * j); // If c^2 is not a perfect square if ((val * val) != (i * i + j * j)) continue; // If c exceeds the maximum value if (val > maximum) continue; // If there exists c in the original array, // we have the triplet if (hash[val]) { return true; } } } return false; } // Driver Code int main() { int arr[] = { 3, 2, 4, 6, 5 }; int n = sizeof(arr) / sizeof(arr[0]); if (checkTriplet(arr, n)) cout << "Yes"; else cout << "No"; }
Java
import java.util.*; class GFG { // Function to check if the // Pythagorean triplet exists or not static boolean checkTriplet(int arr[], int n) { int maximum = 0; // Find the maximum element for (int i = 0; i < n; i++) { maximum = Math.max(maximum, arr[i]); } // Hashing array int []hash = new int[maximum + 1]; // Increase the count of array elements // in hash table for (int i = 0; i < n; i++) hash[arr[i]]++; // Iterate for all possible a for (int i = 1; i < maximum + 1; i++) { // If a is not there if (hash[i] == 0) continue; // Iterate for all possible b for (int j = 1; j < maximum + 1; j++) { // If a and b are same and there is only one a // or if there is no b in original array if ((i == j && hash[i] == 1) || hash[j] == 0) continue; // Find c int val = (int) Math.sqrt(i * i + j * j); // If c^2 is not a perfect square if ((val * val) != (i * i + j * j)) continue; // If c exceeds the maximum value if (val > maximum) continue; // If there exists c in the original array, // we have the triplet if (hash[val] == 1) { return true; } } } return false; } // Driver Code public static void main(String[] args) { int arr[] = { 3, 2, 4, 6, 5 }; int n = arr.length; if (checkTriplet(arr, n)) System.out.print("Yes"); else System.out.print("No"); } } // This code is contributed by Rajput-Ji
Python3
# Function to check if the # Pythagorean triplet exists or not import math def checkTriplet(arr, n): maximum = 0 # Find the maximum element maximum = max(arr) # Hashing array hash = [0]*(maximum+1) # Increase the count of array elements # in hash table for i in range(n): hash[arr[i]] += 1 # Iterate for all possible a for i in range(1, maximum+1): # If a is not there if (hash[i] == 0): continue # Iterate for all possible b for j in range(1, maximum+1): # If a and b are same and there is only one a # or if there is no b in original array if ((i == j and hash[i] == 1) or hash[j] == 0): continue # Find c val = int(math.sqrt(i * i + j * j)) # If c^2 is not a perfect square if ((val * val) != (i * i + j * j)): continue # If c exceeds the maximum value if (val > maximum): continue # If there exists c in the original array, # we have the triplet if (hash[val]): return True return False # Driver Code arr = [3, 2, 4, 6, 5] n = len(arr) if (checkTriplet(arr, n)): print("Yes") else: print("No") # This code is contributed by ankush_953
C#
using System; class GFG { // Function to check if the // Pythagorean triplet exists or not static bool checkTriplet(int []arr, int n) { int maximum = 0; // Find the maximum element for (int i = 0; i < n; i++) { maximum = Math.Max(maximum, arr[i]); } // Hashing array int []hash = new int[maximum + 1]; // Increase the count of array elements // in hash table for (int i = 0; i < n; i++) hash[arr[i]]++; // Iterate for all possible a for (int i = 1; i < maximum + 1; i++) { // If a is not there if (hash[i] == 0) continue; // Iterate for all possible b for (int j = 1; j < maximum + 1; j++) { // If a and b are same and there is only one a // or if there is no b in original array if ((i == j && hash[i] == 1) || hash[j] == 0) continue; // Find c int val = (int) Math.Sqrt(i * i + j * j); // If c^2 is not a perfect square if ((val * val) != (i * i + j * j)) continue; // If c exceeds the maximum value if (val > maximum) continue; // If there exists c in the original array, // we have the triplet if (hash[val] == 1) { return true; } } } return false; } // Driver Code public static void Main(String[] args) { int []arr = { 3, 2, 4, 6, 5 }; int n = arr.Length; if (checkTriplet(arr, n)) Console.Write("Yes"); else Console.Write("No"); } } // This code is contributed by Rajput-Ji
Javascript
<script> // Function to check if the // Pythagorean triplet exists or not function checkTriplet(arr , n) { var maximum = 0; // Find the maximum element for (i = 0; i < n; i++) { maximum = Math.max(maximum, arr[i]); } // Hashing array var hash = Array(maximum + 1).fill(0); // Increase the count of array elements // in hash table for (i = 0; i < n; i++) hash[arr[i]]++; // Iterate for all possible a for (i = 1; i < maximum + 1; i++) { // If a is not there if (hash[i] == 0) continue; // Iterate for all possible b for (j = 1; j < maximum + 1; j++) { // If a and b are same and there is only one a // or if there is no b in original array if ((i == j && hash[i] == 1) || hash[j] == 0) continue; // Find c var val = parseInt( Math.sqrt(i * i + j * j)); // If c^2 is not a perfect square if ((val * val) != (i * i + j * j)) continue; // If c exceeds the maximum value if (val > maximum) continue; // If there exists c in the original array, // we have the triplet if (hash[val] == 1) { return true; } } } return false; } // Driver Code var arr = [ 3, 2, 4, 6, 5 ]; var n = arr.length; if (checkTriplet(arr, n)) document.write("Yes"); else document.write("No"); // This code is contributed by gauravrajput1 </script>
C++
#include <bits/stdc++.h> using namespace std; // Returns true if there is Pythagorean triplet in // ar[0..n-1] bool checkTriplet(int arr[], int n) { // initializing unordered map with key and value as // integers unordered_map<int, int> umap; // Increase the count of array elements in unordered map for (int i = 0; i < n; i++) umap[arr[i]] = umap[arr[i]] + 1; for (int i = 0; i < n - 1; i++) { for (int j = i + 1; j < n; j++) { // calculating the squares of two elements as // integer and float int p = sqrt(arr[i] * arr[i] + arr[j] * arr[j]); float q = sqrt(arr[i] * arr[i] + arr[j] * arr[j]); // Condition is true if the value is same in // integer and float and also the value is // present in unordered map if (p == q && umap[p] != 0) return true; } } // If we reach here, no triplet found return false; } // Driver Code int main() { int arr[] = { 3, 2, 4, 6, 5 }; int n = sizeof(arr) / sizeof(arr[0]); if (checkTriplet(arr, n)) cout << "Yes"; else cout << "No"; } // This code is contributed by Vikkycirus
Java
import java.util.*; class GFG{ // Returns true if there is Pythagorean triplet in // ar[0..n-1] static boolean checkTriplet(int arr[], int n) { // initializing unordered map with key and value as // integers HashMap<Integer,Integer> umap = new HashMap<>(); // Increase the count of array elements in unordered map for (int i = 0; i < n; i++) if(umap.containsKey(arr[i])) umap.put(arr[i] , umap.get(arr[i]) + 1); else umap.put(arr[i], 1); for (int i = 0; i < n - 1; i++) { for (int j = i + 1; j < n; j++) { // calculating the squares of two elements as // integer and float int p =(int) Math.sqrt(arr[i] * arr[i] + arr[j] * arr[j]); float q =(float) Math.sqrt(arr[i] * arr[i] + arr[j] * arr[j]); // Condition is true if the value is same in // integer and float and also the value is // present in unordered map if (p == q && umap.get(p) != 0) return true; } } // If we reach here, no triplet found return false; } // Driver Code public static void main(String[] args) { int arr[] = { 3, 2, 4, 6, 5 }; int n = arr.length; if (checkTriplet(arr, n)) System.out.print("Yes"); else System.out.print("No"); } } // This code is contributed by umadevi9616
C#
using System; using System.Collections.Generic; public class GFG { // Returns true if there is Pythagorean triplet in // ar[0..n-1] static bool checkTriplet(int []arr, int n) { // initializing unordered map with key and value as // integers Dictionary<int, int> umap = new Dictionary<int,int>(); // Increase the count of array elements in unordered map for (int i = 0; i < n; i++) if (umap.ContainsKey(arr[i])) umap.Add(arr[i], umap[arr[i]] + 1); else umap.Add(arr[i], 1); for (int i = 0; i < n - 1; i++) { for (int j = i + 1; j < n; j++) { // calculating the squares of two elements as // integer and float int p = (int) Math.Sqrt(arr[i] * arr[i] + arr[j] * arr[j]); float q = (float) Math.Sqrt(arr[i] * arr[i] + arr[j] * arr[j]); // Condition is true if the value is same in // integer and float and also the value is // present in unordered map if (p == q && umap[p] != 0) return true; } } // If we reach here, no triplet found return false; } // Driver Code public static void Main(String[] args) { int []arr = { 3, 2, 4, 6, 5 }; int n = arr.Length; if (checkTriplet(arr, n)) Console.Write("Yes"); else Console.Write("No"); } } // This code is contributed by umadevi9616
Javascript
<script> // Returns true if there is Pythagorean triplet in // ar[0..n-1] function checkTriplet(arr , n) { // initializing unordered map with key and value as // integers var umap = new Map(); // Increase the count of array elements in unordered map for (i = 0; i < n; i++) if (umap.has(arr[i])) umap.set(arr[i], umap.get(arr[i]) + 1); else umap.set(arr[i], 1); for (i = 0; i < n - 1; i++) { for (j = i + 1; j < n; j++) { // calculating the squares of two elements as // integer and float var p = parseInt( Math.sqrt(arr[i] * arr[i] + arr[j] * arr[j])); var q = Math.sqrt(arr[i] * arr[i] + arr[j] * arr[j]); // Condition is true if the value is same in // integer and var and also the value is // present in unordered map if (p == q && umap.get(p) != 0) return true; } } // If we reach here, no triplet found return false; } // Driver Code var arr = [ 3, 2, 4, 6, 5 ]; var n = arr.length; if (checkTriplet(arr, n)) document.write("Yes"); else document.write("No"); // This code contributed by gauravrajput1 </script>
Python3
# Python program to check if there exists a pythagorean triplet def checkTriplet(arr, n): for i in range(n): arr[i] = arr[i] * arr[i] arr.sort() for i in range(n - 1, 1, -1): s = set() for j in range(i - 1, -1, -1): if (arr[i] - arr[j]) in s: return True s.add(arr[j]) return False # Driver Program arr = [3, 2, 4, 6, 5] n = len(arr) if (checkTriplet(arr, n)): print("Yes") else: print("No") # This is contributed by Manvi Pandey
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA