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