Genere una array cuya suma de todos los subarreglos de tamaño K divididos por N deje un resto X

Dados tres enteros N , K y X , la tarea es crear una array de longitud N tal que la suma de todos sus subarreglos de longitud K módulo N sea X .
Ejemplos: 
 

Entrada: N = 6, K = 3, X = 3 
Salida: 9 6 6 9 6 6 
Explicación: 
Todos los subarreglos de longitud 3 y sus respectivos valores de suma%N son los siguientes: 
[9, 6, 6] Suma = 21 % 6 = 3 
[6, 6, 9] suma = 21 % 6 = 3 
[6, 9, 6] suma = 21 % 6 = 3 
[9, 6, 6] suma = 21 % 6 = 3 
Como todos sus subarreglos tienen sum % N = X (=3), la array generada es válida.
Entrada: N = 4, K = 2, X = 2 
Salida: 6 4 6 4 
 

Enfoque: 
podemos observar que para que la suma de cualquier subarreglo de tamaño K módulo N sea igual a X , el subarreglo debe tener un K – 1 elementos iguales a N y 1 elemento igual a N + X.
Ilustración: 
 

Si N = 6, K = 3, X = 3 
Aquí, un subarreglo de longitud K debe ser una permutación de {9, 6, 6} donde 2 (K – 1) elementos son divisibles por 6 y 1 elemento tiene un módulo N igual a X( 9%6 = 3) 
Suma del subarreglo % N = (21 % 6) = 3 (igual que X) 
Por lo tanto, cada longitud de K 
 

Por lo tanto, siga los pasos a continuación para resolver el problema: 
 

  • Iterar i de 0 a N – 1 , para imprimir el i -ésimo elemento del subarreglo requerido. 
     
  • Si i % K es igual a 0 , imprima N + X . De lo contrario, para todos los demás valores de i ,  imprima N.
     
  • Esto asegura que cada posible subarreglo de longitud K tenga una suma K*N + X . Por lo tanto, la suma del módulo N es X para todos esos subarreglos. 
     

A continuación se muestra la implementación del enfoque anterior. 
 

C++

// C++ implementation of the
// above approach
#include <bits/stdc++.h>
using namespace std;
 
// Function prints the required array
void createArray(int n, int k, int x)
{
    for (int i = 0; i < n; i++) {
        // First element of each K
        // length subarrays
        if (i % k == 0) {
            cout << x + n << " ";
        }
        else {
            cout << n << " ";
        }
    }
}
 
// Driver Program
int main()
{
 
    int N = 6, K = 3, X = 3;
    createArray(N, K, X);
}

Java

// Java implementation of the above approach
import java.util.*;
class GFG{
 
// Function prints the required array
static void createArray(int n, int k, int x)
{
    for(int i = 0; i < n; i++)
    {
         
       // First element of each K
       // length subarrays
       if (i % k == 0)
       {
           System.out.print((x + n) + " ");
       }
       else
       {
           System.out.print(n + " ");
       }
    }
}
 
// Driver Code
public static void main(String args[])
{
    int N = 6, K = 3, X = 3;
     
    createArray(N, K, X);
}
}
 
// This code is contributed by Code_Mech

Python3

# Python3 implementation of the
# above approach
 
# Function prints the required array
def createArray(n, k, x):
     
    for i in range(n):
         
        # First element of each K
        # length subarrays
        if (i % k == 0):
            print(x + n, end = " ")
        else :
            print(n, end = " ")
 
# Driver code
N = 6
K = 3
X = 3
 
createArray(N, K, X)
 
# This code is contributed by Vishal Maurya.

C#

// C# implementation of the above approach
using System;
class GFG{
 
// Function prints the required array
static void createArray(int n, int k, int x)
{
    for(int i = 0; i < n; i++)
    {
        
       // First element of each K
       // length subarrays
       if (i % k == 0)
       {
           Console.Write((x + n) + " ");
       }
       else
       {
           Console.Write(n + " ");
       }
    }
}
 
// Driver Code
public static void Main()
{
    int N = 6, K = 3, X = 3;
     
    createArray(N, K, X);
}
}
 
// This code is contributed by Code_Mech

Javascript

<script>
 
// Javascript implementation of the
// above approach
 
// Function prints the required array
function createArray(n, k, x)
{
    for (var i = 0; i < n; i++) {
        // First element of each K
        // length subarrays
        if (i % k == 0) {
            document.write( x + n + " ");
        }
        else {
            document.write( n + " ");
        }
    }
}
 
// Driver Program
var N = 6, K = 3, X = 3;
createArray(N, K, X);
 
// This code is contributed by itsok.
</script>
Producción: 

9 6 6 9 6 6

 

Complejidad temporal: O(N) 
Espacio auxiliar: O(1)
 

Publicación traducida automáticamente

Artículo escrito por grand_master y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *