Skip to content
Related Articles

Related Articles

Improve Article

Check if sum of the given array can be reduced to 0 by reducing array elements by K

  • Last Updated : 08 Apr, 2021

Given an array arr[] consisting of N integers and an integer K, the task is to check if the sum of the array can be reduced to 0 by subtracting array elements by K any number of times.

Examples:

Input: arr[ ]= {-3, 2, -1, 5, 1}, K=2
Output: “Yes”
Explanation: 
Sum of the array is 4.  Therefore, decreasing two elements at any index by K( = 2), makes the sum of the array 0.
Input: arr[ ]= {1, -6, 2, 2}, K=1
Output: “No”

Approach: Follow the steps below to solve the problem:

  1. Traverse the array and calculate the sum of the given array.
  2. According to the value of the sum, the following cases arise:
    1. If sum = 0: No operation is required. Therefore, the answer is “Yes”.
    2. If sum > 0: Sum can be reduced to 0 only if sum is a multiple of K. If sum is not a multiple of K, print “No”. Otherwise, print “Yes”.
    3. If sum < 0: Simply print “No”.

Below is the implementation of the above approach:



C++




// C++ program for the above approach
#include <bits/stdc++.h>
using namespace std;
 
// Function to check if the
// sum can be made 0 or not
int sumzero(int arr[], int N, int K)
{
    // Stores sum of array elements
    int sum = 0;
 
    // Traverse the array
    for (int i = 0; i < N; i++) {
 
        sum += arr[i];
    }
 
    if (sum == 0)
        cout << "Yes";
 
    else if (sum > 0) {
 
        if (sum % K == 0)
            cout << "Yes";
 
        else
            cout << "No";
    }
 
    else
        cout << "No";
    return 0;
}
 
// Driver Code
int main()
{
    int K, N;
 
    // Given array arr[]
    int arr1[] = { 1, -6, 2, 2 };
    K = 1;
    N = sizeof(arr1) / sizeof(arr1[0]);
 
    sumzero(arr1, N, K);
 
    return 0;
}

Java




// Java program for the above approach
 
import java.util.*;
 
class GFG{
 
// Function to check if the
// sum can be made 0 or not
static int sumzero(int arr[], int N, int K)
{
    // Stores sum of array elements
    int sum = 0;
 
    // Traverse the array
    for (int i = 0; i < N; i++) {
 
        sum += arr[i];
    }
 
    if (sum == 0)
        System.out.print("Yes");
 
    else if (sum > 0) {
 
        if (sum % K == 0)
            System.out.print("Yes");
 
        else
            System.out.print("No");
    }
 
    else
        System.out.print("No");
    return 0;
}
 
// Driver Code
public static void main(String[] args)
{
    int K, N;
 
    // Given array arr[]
    int arr1[] = { 1, -6, 2, 2 };
    K = 1;
    N = arr1.length;
 
    sumzero(arr1, N, K);
 
}
}
 
// This code is contributed by 29AjayKumar

Python3




# Python3 program for the above approach
 
# Function to check if the
# sum can be made 0 or not
def sumzero(arr, N, K) :
     
    # Stores sum of array elements
    sum = 0;
 
    # Traverse the array
    for i in range(N) :
        sum += arr[i];
    if (sum == 0) :
        print("Yes");
    elif (sum > 0) :
        if (sum % K == 0) :
            print("Yes");
        else :
            print("No");
    else :
        print("No");
 
# Driver Code
if __name__ == "__main__" :
 
    # Given array arr[]
    arr1 = [ 1, -6, 2, 2 ];
     
    K = 1;
    N = len(arr1);
 
    sumzero(arr1, N, K);
 
    # This code is contributed by AnkThon

C#




// C# program for the above approach
using System;
class GFG{
 
// Function to check if the
// sum can be made 0 or not
static int sumzero(int []arr, int N, int K)
{
   
    // Stores sum of array elements
    int sum = 0;
 
    // Traverse the array
    for (int i = 0; i < N; i++)
    {
 
        sum += arr[i];
    }
 
    if (sum == 0)
        Console.Write("Yes");
 
    else if (sum > 0)
    {
 
        if (sum % K == 0)
            Console.Write("Yes");
 
        else
            Console.Write("No");
    }
 
    else
        Console.Write("No");
    return 0;
}
 
// Driver Code
public static void Main(String[] args)
{
    int K, N;
 
    // Given array []arr
    int []arr1 = { 1, -6, 2, 2 };
    K = 1;
    N = arr1.Length;
 
    sumzero(arr1, N, K);
}
}
 
// This code is contributed by 29AjayKumar

Javascript




<script>
 
// JavaScript program for the above approach
 
// Function to check if the
    // sum can be made 0 or not
    function sumzero(arr , N , K)
    {
        // Stores sum of array elements
        var sum = 0;
 
        // Traverse the array
        for (i = 0; i < N; i++) {
 
            sum += arr[i];
        }
 
        if (sum == 0)
            document.write("Yes");
 
        else if (sum > 0) {
 
            if (sum % K == 0)
                document.write("Yes");
 
            else
                document.write("No");
        }
 
        else
            document.write("No");
        return 0;
    }
 
    // Driver Code
     
        var K, N;
 
        // Given array arr
        var arr1 = [ 1, -6, 2, 2 ];
        K = 1;
        N = arr1.length;
 
        sumzero(arr1, N, K);
 
 
// This code contributed by gauravrajput1
 
</script>
Output: 
No

 

Time Complexity: O(N)
Auxiliary Space: O(1)

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.  To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.

In case you wish to attend live classes with experts, please refer DSA Live Classes for Working Professionals and Competitive Programming Live for Students.




My Personal Notes arrow_drop_up
Recommended Articles
Page :