Split N^2 numbers into N groups of equal sum
Last Updated :
11 Jul, 2022
Given an even number N. The task is to consider numbers from 1 to N2, split them into N groups of the equal sum.
Examples:
Input: N = 2
Output: {1, 4}, {2, 3}
Two groups of equal sum are 1, 4 and 2,3
Input: N = 4
Output:
{ 1, 16} { 2, 15}
{ 3, 14} { 4, 13}
{ 5, 12} { 6, 11}
{ 7, 10} { 8, 9}
Approach: Formula for sum of first N2 numbers: Sum = (N2 * (N2 + 1))/ 2.
Therefore, the sum of each group would be = (N2 + 1)* N2 / 2
Let us consider pairs of the following type (1, N2), (2, N2-1) and so on.
Since N2 is an even number, each group can be made using exactly N/2 such pairs.
Below is the implementation of the above approach:
C++
#include <bits/stdc++.h>
using namespace std;
void printGroups( int n)
{
int x = 1;
int y = n * n;
for ( int i = 1; i <= n; i++) {
for ( int j = 1; j <= n / 2; j++) {
cout << "{ " << x << ", " << y << "} " ;
x++;
y--;
}
cout << endl;
}
}
int main()
{
int n = 4;
printGroups(n);
return 0;
}
|
Java
import java.io.*;
class GFG {
static void printGroups( int n)
{
int x = 1 ;
int y = n * n;
for ( int i = 1 ; i <= n; i++) {
for ( int j = 1 ; j <= n / 2 ; j++) {
System.out.print( "{ " + x + ", " + y + "} " );
x++;
y--;
}
System.out.println();
}
}
public static void main (String[] args) {
int n = 4 ;
printGroups(n);
}
}
|
Python3
def printGroups(n) :
x = 1
y = n * n
for i in range ( 1 , n + 1 ) :
for j in range ( 1 , n / / 2 + 1 ) :
print ( "{" ,x, "," ,y, "}" ,end = " " )
x + = 1
y - = 1
print ()
if __name__ = = "__main__" :
n = 4
printGroups(n)
|
C#
using System;
class GFG
{
static void printGroups( int n)
{
int x = 1;
int y = n * n;
for ( int i = 1; i <= n; i++)
{
for ( int j = 1; j <= n / 2; j++)
{
Console.Write( "{ " + x + ", " + y + "} " );
x++;
y--;
}
Console.WriteLine();
}
}
public static void Main ()
{
int n = 4;
printGroups(n);
}
}
|
PHP
<?php
function printGroups( $n )
{
$x = 1;
$y = $n * $n ;
for ( $i = 1; $i <= $n ; $i ++)
{
for ( $j = 1; $j <= $n / 2; $j ++)
{
echo "{ " , $x , ", " , $y , " } " ;
$x ++;
$y --;
}
echo "\n" ;
}
}
$n = 4;
printGroups( $n );
?>
|
Javascript
<script>
function prletGroups(n)
{
let x = 1;
let y = n * n;
for (let i = 1; i <= n; i++) {
for (let j = 1; j <= n / 2; j++) {
document.write( "{ " + x + ", " + y + "} " );
x++;
y--;
}
document.write( "<br/>" );
}
}
let n = 4;
prletGroups(n);
</script>
|
Output:
{ 1, 16} { 2, 15}
{ 3, 14} { 4, 13}
{ 5, 12} { 6, 11}
{ 7, 10} { 8, 9}
Time Complexity: O(n2)
Auxiliary Space: O(1)
Share your thoughts in the comments
Please Login to comment...