Sunday, October 6, 2024
Google search engine
HomeData Modelling & AICheck if the sum of perfect squares in an array is divisible...

Check if the sum of perfect squares in an array is divisible by x

Given an array arr[] and an integer x, the task is to check whether the sum of all the perfect squares from the array is divisible by x or not. If divisible then print Yes else print No.

Examples: 

Input: arr[] = {2, 3, 4, 6, 9, 10}, x = 13 
Output: Yes 
4 and 9 are the only perfect squares from the array 
sum = 4 + 9 = 13 (which is divisible by 13)

Input: arr[] = {2, 4, 25, 49, 3, 8}, x = 9 
Output: No 

Approach: Run a loop from i to n – 1 and check whether arr[i] is a perfect square or not. If arr[i] is a perfect square then update sum = sum + arr[i]. If in the end sum % x = 0 then print Yes else print No. To check whether an element is a perfect square or not, follow the following steps: 

Let num be an integer element 
float sq = sqrt(x) 
if floor(sq) = ceil(sq) then num is a perfect square else not. 

Algorithm:

Step 1: Start
Step 2: Create a function called “check” that accepts the arguments “arr,” “x,” and “n” as an array of integers.
Step 3: Create the long variable “sum” and set its initial value to 0.
Step 4: From 0 to n-1 times, iterate, and for each index i.
            a. Calculate arr[isquare ]’s root and place the result in the double variable “sqrt.”
            b. Include arr[i] in the sum if sqrt is an integer.
Step 5: Return true if the total of all perfect squares in arr can be divided by x; otherwise, return false.
Step 6: End

Below is the implementation of the above approach: 

C++




// C++ implementation of the approach
#include <bits/stdc++.h>
using namespace std;
 
// Function that returns true if the sum of all the
// perfect squares of the given array are divisible by x
bool check(int arr[], int x, int n)
{
    long long sum = 0;
    for (int i = 0; i < n; i++) {
        double x = sqrt(arr[i]);
 
        // If arr[i] is a perfect square
        if (floor(x) == ceil(x)) {
            sum += arr[i];
        }
    }
 
    if (sum % x == 0)
        return true;
    else
        return false;
}
 
// Driver code
int main()
{
    int arr[] = { 2, 3, 4, 9, 10 };
    int n = sizeof(arr) / sizeof(arr[0]);
    int x = 13;
 
    if (check(arr, x, n)) {
        cout << "Yes";
    }
    else {
        cout << "No";
    }
    return 0;
}


Java




// Java implementation of the approach
public class GFG{
 
    // Function that returns true if the sum of all the
    // perfect squares of the given array is divisible by x
    static boolean check(int arr[], int x, int n)
    {
        long sum = 0;
        for (int i = 0; i < n; i++) {
            double y = Math.sqrt(arr[i]);
     
            // If arr[i] is a perfect square
            if (Math.floor(y) == Math.ceil(y)) {
                sum += arr[i];
            }
        }
     
        if (sum % x == 0)
            return true;
        else
            return false;
    }
 
 
 
    // Driver Code
    public static void main(String []args){
        int arr[] = { 2, 3, 4, 9, 10 };
        int n = arr.length ;
        int x = 13;
 
        if (check(arr, x, n)) {
            System.out.println("Yes");
        }
        else {
           System.out.println("No");
        }
    }
    // This code is contributed by Ryuga
}


Python3




# Python3 implementation of the approach
import math
 
# Function that returns true if  the sum of all the
# perfect squares of the given array is divisible by x
def check (a, y):
    sum = 0
    for i in range(len(a)):
         
        x = math.sqrt(a[i])
 
        # If a[i] is a perfect square
        if (math.floor(x) == math.ceil(x)):
            sum = sum + a[i]
     
    if (sum % y == 0):
        return True
    else:
        return False
         
 
# Driver code
a = [2, 3, 4, 9, 10]
x = 13
 
if check(a, x) :
    print("Yes")
else:
    print("No")


C#




// C# implementation of the approach
 
using System;
public class GFG{
  
    // Function that returns true if  the sum of all the
    // perfect squares of the given array is divisible by x
    static bool check(int[] arr, int x, int n)
    {
        long sum = 0;
        for (int i = 0; i < n; i++) {
            double y = Math.Sqrt(arr[i]);
      
            // If arr[i] is a perfect square
            if (Math.Floor(y) == Math.Ceiling(y)) {
                sum += arr[i];
            }
        }
      
        if (sum % x == 0)
            return true;
        else
            return false;
    }
  
  
  
    // Driver Code
    public static void Main(){
        int[] arr = { 2, 3, 4, 9, 10 };
        int n = arr.Length ;
        int x = 13;
  
        if (check(arr, x, n)) {
            Console.Write("Yes");
        }
        else {
           Console.Write("No");
        }
    }   
}


PHP




<?php
// PHP implementation of the approach
 
// Function that returns true if the
// sum of all the perfect squares of
// the given array is divisible by x
function check($arr, $x, $n)
{
    $sum = 0;
    for ($i = 0; $i < $n; $i++)
    {
        $x = sqrt($arr[$i]);
 
        // If arr[i] is a perfect square
        if (floor($x) == ceil($x))
        {
            $sum += $arr[$i];
        }
    }
 
    if (($sum % $x) == 0)
        return true;
    else
        return false;
}
 
// Driver code
$arr = array( 2, 3, 4, 9, 10 );
$n = sizeof($arr);
$x = 13;
 
if (!check($arr, $x, $n))
{
    echo "Yes";
}
else
{
    echo "No";
}
 
// This code is contributed by Sachin
?>


Javascript




<script>
 
// Javascript implementation of the approach
     
    // Function that returns true if the sum of all the
    // perfect squares of the given array is divisible by x
    function check(arr,x,n)
    {
        let sum = 0;
        for (let i = 0; i < n; i++) {
            let y = Math.sqrt(arr[i]);
       
            // If arr[i] is a perfect square
            if (Math.floor(y) == Math.ceil(y)) {
                sum += arr[i];
            }
        }
       
        if (sum % x == 0)
            return true;
        else
            return false;
    }
    // Driver Code
     
    let arr=[ 2, 3, 4, 9, 10];
    let n = arr.length ;
    let x = 13;
    if (check(arr, x, n)) {
        document.write("Yes");
    }
    else {
       document.write("No");
    }
         
    // This code is contributed by unknown2108
     
</script>


Output

Yes

Complexity Analysis:

  • Time Complexity: O(nlogn)
  • Auxiliary Space: O(1)
Feeling lost in the world of random DSA topics, wasting time without progress? It’s time for a change! Join our DSA course, where we’ll guide you on an exciting journey to master DSA efficiently and on schedule.
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 neveropen!

RELATED ARTICLES

Most Popular

Recent Comments