Skip to content
Related Articles

Related Articles

Print N distinct numbers following the given operations

View Discussion
Improve Article
Save Article
  • Last Updated : 09 Nov, 2021
View Discussion
Improve Article
Save Article

Given an integer N which is always an even number, our task is to print N distinct numbers following the given conditions: 
 

  • The first half numbers are even whereas the other half numbers are odd
  • Sum of the elements of first half numbers and sum of elements of second half numbers should be equal

Print the array if the above conditions satisfy otherwise output “-1”.
Examples:
 

Input: N = 4 
Output: 2 4 1 5 
Explanation: 
Given number 4 we are required to print 4 numbers. First Half = 2, 4 and their sum is 6, other half = 1, 5 and their sum is also 6.
Input: N = 22 
Output: -1 
Explanation: 
It is not possible to print the required array. 
 

 

Approach:
To solve the problem mentioned above we have to observe that the integer N has to be a multiple of 4
 

  • We know that the sum of the first N/2 even numbers will be even, so if the sum of the other N/2 integers is also even then N/2 must be even, because the sum of an odd number of odd integers is always odd.
  • If N/2 is even then N is a multiple of 4, so if n is not divisible by 4 then the answer is “-1”, otherwise, there will be a possible array.
  • For printing the array we will consider two parts such that the first half that is N/2 elements will be simply multiples of 2 and the other half will be multiple of 2 – 1. For the last element in the array, we will calculate the integer by applying the direct formula N + N / 2 – 1 because we are supposed to make the sum for two halves equal.

Below is the implementation of the above approach: 
 

C++




// C++ implementation to Print N distinct numbers
#include <bits/stdc++.h>
using namespace std;
 
// Function to print the required array
bool printArr(int n)
{
 
    // Check if number is a multiple of 4
    if (n % 4 == 0) {
        // Printing Left Half of the array
        for (int i = 1; i <= n / 2; i++)
            cout << i * 2 << ' ';
 
        // Printing Right Half of the array
        for (int i = 1; i < n / 2; i++)
            cout << i * 2 - 1 << ' ';
        cout << n + n / 2 - 1 << '\n';
    }
 
    else
        cout << "-1";
}
 
// Driver code
int main()
{
    int n = 22;
 
    printArr(n);
 
    return 0;
}

Java




// Java implementation to print N distinct numbers
import java.util.*;
 
class GFG{
 
// Function to print the required array
static void printArr(int n)
{
 
    // Check if number is a multiple of 4
    if(n % 4 == 0)
    {
       // Printing left half of the array
       for(int i = 1; i <= n / 2; i++)
           System.out.print(i * 2 + " ");
 
       // Printing Right Half of the array
       for(int i = 1; i < n / 2; i++)
           System.out.print(i * 2 - 1 + " ");
 
       System.out.println(n + n / 2 - 1);
    }
    else
        System.out.print("-1");
}
 
// Driver code
public static void main(String[] args)
{
    int n = 22;
    printArr(n);
}
}
 
// This code is contributed by amal kumar choubey

Python3




# Python3 implementation to print
# N distinct numbers
 
# Function to print the required array
def printArr(n):
 
    # Check if number is a multiple of 4
    if (n % 4 == 0):
         
        # Printing Left Half of the array
        for i in range(1, (n / 2) + 1):
            print (i * 2, end = " ")
 
        # Printing Right Half of the array
        for i in range(1, n / 2):
            print (i * 2 - 1, end = " ")
             
        print (n + n / 2 - 1, end = "\n")
 
    else:
        print ("-1")
 
# Driver code
n = 22
printArr(n)
 
# This code is contributed by PratikBasu

C#




// C# implementation to print N distinct numbers
using System;
 
public class GFG{
 
// Function to print the required array
static void printArr(int n)
{
 
    // Check if number is a multiple of 4
    if(n % 4 == 0)
    {
         
    // Printing left half of the array
    for(int i = 1; i <= n / 2; i++)
        Console.Write(i * 2 + " ");
 
    // Printing Right Half of the array
    for(int i = 1; i < n / 2; i++)
        Console.Write(i * 2 - 1 + " ");
 
    Console.WriteLine(n + n / 2 - 1);
    }
     
    else
        Console.Write("-1");
}
 
// Driver code
public static void Main(String[] args)
{
    int n = 22;
    printArr(n);
}
}
 
// This code is contributed by 29AjayKumar

Javascript




<script>
 
// Javascript implementation to Print N distinct numbers
 
// Function to print the required array
function printArr(n)
{
 
    // Check if number is a multiple of 4
    if (n % 4 == 0) {
        // Printing Left Half of the array
        for (var i = 1; i <= n / 2; i++)
            document.write( i * 2 + ' ');
 
        // Printing Right Half of the array
        for (var i = 1; i < n / 2; i++)
            document.write( i * 2 - 1 + ' ');
        document.write( n + n / 2 - 1 + '<br>');
    }
 
    else
        document.write( "-1");
}
 
// Driver code
var n = 22;
printArr(n);
 
</script>

Output: 

-1

 

Time Complexity: O(N)

Auxiliary Space: O(1)
 


My Personal Notes arrow_drop_up
Recommended Articles
Page :

Start Your Coding Journey Now!