Рубрики

Разбейте N ^ 2 числа на N групп равной суммы

Дано четное число N. Задача состоит в том, чтобы рассмотреть числа от 1 до N 2 , разбить их на N групп равной суммы.

Примеры :

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}

Подход: Формула для суммы первых N 2 чисел: Sum = (N 2 * (N 2 + 1)) / 2 .

Таким образом, сумма каждой группы будет = (N2 + 1) * N 2/2

Рассмотрим пары следующего типа (1, N 2 ), (2, N 2 -1) и т. Д.

Поскольку N 2 является четным числом, каждая группа может быть составлена с использованием точно N / 2 таких пар.

Ниже приведена реализация вышеуказанного подхода:

C ++

// C ++ реализация вышеуказанного подхода
#include <bits/stdc++.h>

using namespace std;

  
// Функция для печати N групп равной суммы

void printGroups(int n)

{

    int x = 1;

    int y = n * n;

  

    // Количество групп

    for (int i = 1; i <= n; i++) {

  

        // n / 2 пары

        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 {

      

  

  
// Функция для печати N групп равной суммы

static void printGroups(int n)

{

    int x = 1;

    int y = n * n;

  

    // Количество групп

    for (int i = 1; i <= n; i++) {

  

        // n / 2 пары

        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);

    }

}
// Этот код предоставлен shs

python3

# Python реализация вышеуказанного подхода

  
# Функция для печати N групп равной суммы

def printGroups(n) :

      

    x = 1

    y = n * n

      

    № Количество групп

    for i in range(1, n + 1) :

          

        # n / 2 пары

        for j in range(1, n // 2 + 1) :

              

            print("{",x,",",y,"}",end = " ")

              

            x += 1

            y -= 1

          

        print()

          

         
# Код драйвера

if __name__ == "__main__" :

      

    n = 4

      

    # Вызов функции

    printGroups(n)

  
# Этот код предоставлен Ryuga

C #

// Java реализация
// вышеуказанный подход

using System;

  

class GFG 

{

      
// Функция для печати N групп
// равной суммы

static void printGroups(int n)

{

    int x = 1;

    int y = n * n;

  

    // Количество групп

    for (int i = 1; i <= n; i++) 

    {

  

        // n / 2 пары

        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);

}
}

  
// Этот код предоставлен shs

PHP

<?php
// Реализация PHP
// вышеуказанный подход

  
// Функция для печати N групп
// равной суммы

function printGroups($n)

{

    $x = 1;

    $y = $n * $n;

  

    // Количество групп

    for ($i = 1; $i <= $n; $i++)

    {

  

        // n / 2 пары

        for ($j = 1; $j <= $n / 2; $j++) 

        {

            echo "{ " , $x , ", " , $y , " } ";

            $x++;

            $y--;

        }

  

        echo "\n";

    }

}

  
// Код драйвера

$n = 4;

printGroups($n);

      
// Этот код предоставлен shs
?>

Выход:

{ 1, 16} { 2, 15} 
{ 3, 14} { 4, 13} 
{ 5, 12} { 6, 11} 
{ 7, 10} { 8, 9}

Рекомендуемые посты:

Разбейте N ^ 2 числа на N групп равной суммы

0.00 (0%) 0 votes