Saturday, June 13, 2026
HomeData Modelling & AISplit N^2 numbers into N groups of equal sum

Split N^2 numbers into N groups of equal sum

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++




// C++ implementation of the above approach
#include <bits/stdc++.h>
using namespace std;
 
// Function to print N groups of equal sum
void printGroups(int n)
{
    int x = 1;
    int y = n * n;
 
    // No. of Groups
    for (int i = 1; i <= n; i++) {
 
        // n/2 pairs
        for (int j = 1; j <= n / 2; j++) {
            cout << "{ " << x << ", " << y << "} ";
            x++;
            y--;
        }
 
        cout << endl;
    }
}
 
// Driver code
int main()
{
    int n = 4;
    printGroups(n);
 
    return 0;
}


Java




// Java implementation of the above approach
 
import java.io.*;
 
class GFG {
     
 
 
// Function to print N groups of equal sum
static void printGroups(int n)
{
    int x = 1;
    int y = n * n;
 
    // No. of Groups
    for (int i = 1; i <= n; i++) {
 
        // n/2 pairs
        for (int j = 1; j <= n / 2; j++) {
            System.out.print("{ " + x + ", " + y + "} ");
            x++;
            y--;
        }
 
        System.out.println();
    }
}
 
// Driver code
 
    public static void main (String[] args) {
            int n = 4;
    printGroups(n);
    }
}
// This code is contributed by shs


Python3




# Python implementation of the above approach
 
# Function to print N groups of equal sum
def printGroups(n) :
     
    x = 1
    y = n * n
     
    # No. of Groups
    for i in range(1, n + 1) :
         
        # n/2 pairs
        for j in range(1, n // 2 + 1) :
             
            print("{",x,",",y,"}",end = " ")
             
            x += 1
            y -= 1
         
        print()
         
        
# Driver code
if __name__ == "__main__" :
     
    n = 4
     
    # Function call
    printGroups(n)
 
# This code is contributed by Ryuga


C#




// Java implementation of the
// above approach
using System;
 
class GFG
{
     
// Function to print N groups
// of equal sum
static void printGroups(int n)
{
    int x = 1;
    int y = n * n;
 
    // No. of Groups
    for (int i = 1; i <= n; i++)
    {
 
        // n/2 pairs
        for (int j = 1; j <= n / 2; j++)
        {
            Console.Write("{ " + x + ", " + y + "} ");
            x++;
            y--;
        }
 
        Console.WriteLine();
    }
}
 
// Driver code
public static void Main ()
{
    int n = 4;
    printGroups(n);
}
}
 
// This code is contributed by shs


PHP




<?php
// PHP implementation of the
// above approach
 
// Function to print N groups
// of equal sum
function printGroups($n)
{
    $x = 1;
    $y = $n * $n;
 
    // No. of Groups
    for ($i = 1; $i <= $n; $i++)
    {
 
        // n/2 pairs
        for ($j = 1; $j <= $n / 2; $j++)
        {
            echo "{ " , $x , ", " , $y , " } ";
            $x++;
            $y--;
        }
 
        echo "\n";
    }
}
 
// Driver code
$n = 4;
printGroups($n);
     
// This code is contributed by shs
?>


Javascript




<script>
 
// Javascript implementation of the above approach
 
// Function to print N groups of equal sum
function prletGroups(n)
{
    let x = 1;
    let y = n * n;
 
    // No. of Groups
    for (let i = 1; i <= n; i++) {
 
        // n/2 pairs
        for (let j = 1; j <= n / 2; j++) {
            document.write("{ " + x + ", " + y + "} ");
            x++;
            y--;
        }
 
        document.write("<br/>");
    }
}
 
// driver program
     
    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)

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

5 COMMENTS

Most Popular

Dominic
32515 POSTS0 COMMENTS
Milvus
131 POSTS0 COMMENTS
Nango Kala
6897 POSTS0 COMMENTS
Nicole Veronica
12013 POSTS0 COMMENTS
Nokonwaba Nkukhwana
12109 POSTS0 COMMENTS
Shaida Kate Naidoo
7019 POSTS0 COMMENTS
Ted Musemwa
7262 POSTS0 COMMENTS
Thapelo Manthata
6976 POSTS0 COMMENTS
Umr Jansen
6964 POSTS0 COMMENTS