Represent N as sum of K even numbers

Given two integers N and K, the task is to represent N as sum of K even number. If it is not possible to represent the number, print -1.

Note: The representation may contain duplicate even numbers.

Examples:

Input: N = 6, K = 3
Output: 2 2 2
Explanation:
The given number 6 can be represented as 2 + 2 + 2 = 6

Input: N = 8, K = 2
Output: 2 6
Explanation:
The given number 3 can be represented as 2 + 6 = 8



Approach: To solve the problem mentioned above a simple solution is to maximise the occurrence of 2 which is the smallest even number. Necessary condition to represent N as sum of K numbers are:

  • (K – 1) * 2 must be less than N.
  • N – (K – 1) * 2 must be Even.

Below is the implementation of the above approach:

C++

filter_none

edit
close

play_arrow

link
brightness_4
code

// C++ implementation to represent
// N as sum of K even numbers
  
#include <bits/stdc++.h>
using namespace std;
  
// Function to print the representation
void sumEvenNumbers(int N, int K)
{
    int check = N - 2 * (K - 1);
  
    // N must be greater than equal to 2*K
    // and must be even
    if (check > 0 && check % 2 == 0) {
        for (int i = 0; i < K - 1; i++) {
            cout << "2 ";
        }
        cout << check;
    }
    else {
        cout << "-1";
    }
}
  
// Driver Code
int main()
{
    int N = 8;
    int K = 2;
  
    sumEvenNumbers(N, K);
    return 0;
}

chevron_right


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

// Java implementation to represent
// N as sum of K even numbers
import java.util.*;
  
class GFG{
      
// Function to print the representation
static void sumEvenNumbers(int N, int K)
{
    int check = N - 2 * (K - 1);
  
    // N must be greater than equal to 2 * K
    // and must be even
    if (check > 0 && check % 2 == 0)
    {
        for(int i = 0; i < K - 1; i++)
        {
           System.out.print("2 ");
        }
        System.out.println(check);
    }
    else
    {
        System.out.println("-1");
    }
}
  
// Driver Code
public static void main(String args[])
{
    int N = 8;
    int K = 2;
  
    sumEvenNumbers(N, K);
}
}
  
// This code is contributed by ANKITKUMAR34

chevron_right


Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

# Python3 implementation to represent
# N as sum of K even numbers
  
# Function to print the representation
def sumEvenNumbers(N, K):
      
    check = N - 2 * (K - 1)
  
    # N must be greater than equal to 2 * K
    # and must be even
    if (check > 0 and check % 2 == 0):
        for i in range(K - 1):
            print("2 ", end = "")
              
        print(check)
    else:
        print("-1")
  
# Driver Code
N = 8
K = 2
sumEvenNumbers(N, K)
  
# This code is contributed by ANKITKUMAR34

chevron_right


C#

filter_none

edit
close

play_arrow

link
brightness_4
code

// C# implementation to represent
// N as sum of K even numbers
using System;
  
class GFG{
      
// Function to print the representation
static void sumEvenNumbers(int N, int K)
{
    int check = N - 2 * (K - 1);
  
    // N must be greater than equal to
    //  2 * K and must be even
    if (check > 0 && check % 2 == 0)
    {
        for(int i = 0; i < K - 1; i++)
        {
           Console.Write("2 ");
        }
        Console.WriteLine(check);
    }
    else
    {
        Console.WriteLine("-1");
    }
}
  
// Driver Code
static public void Main(String []args)
{
    int N = 8;
    int K = 2;
  
    sumEvenNumbers(N, K);
}
}
  
// This code is contributed by 29AjayKumar

chevron_right


Output:

2 6

Time Complexity: O(K)

competitive-programming-img




My Personal Notes arrow_drop_up

Recommended Posts: