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)