Representar N como la suma de K números impares con repeticiones permitidas

Dados dos números enteros N y K , la tarea es representar N como la suma de K números impares. Si no es posible crear la suma, genere -1 .
Nota: La representación puede contener números impares duplicados.
Ejemplos:
 

Entrada: N = 5, K = 3 
Salida: 1, 1, 3 
Explicación: 
El número dado N se puede representar como 1 + 1 + 3 = 5
Entrada: N = 7, K = 5 
Salida: 1, 1, 1, 1, 3 
Explicación: 
El número dado N se puede representar como 1 + 1 + 1 + 1 + 3 = 7 
 

Enfoque: 
Para resolver el problema mencionado anteriormente, una solución simple es maximizar la ocurrencia de 1 , que es el número impar más pequeño posible. Las condiciones necesarias para representar el número N como K números impares son: 
 

  • (K – 1) debe ser menor que N.
  • N – (K – 1) debe ser un número impar.

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

C++

// C++ implementation to represent
// N as sum of K even numbers
  
#include <bits/stdc++.h>
  
using namespace std;
  
// Function to print the representation
void sumOddNumbers(int N, int K)
{
    int check = N - (K - 1);
  
    // N must be greater than equal to 2*K
    // and must be odd
    if (check > 0 && check % 2 == 1) {
        for (int i = 0; i < K - 1; i++) {
            cout << "1 ";
        }
        cout << check;
    }
    else
        cout << "-1";
}
  
// Driver Code
int main()
{
  
    int N = 5;
    int K = 3;
  
    sumOddNumbers(N, K);
    return 0;
}

Java

// Java implementation to represent
// N as sum of K even numbers
import java.util.*;
  
class GFG{
  
// Function to print the representation
static void sumOddNumbers(int N, int K)
{
    int check = N - (K - 1);
  
    // N must be greater than equal 
    // to 2*K and must be odd
    if (check > 0 && check % 2 == 1)
    {
        for(int i = 0; i < K - 1; i++)
        {
           System.out.print("1 ");
        }
        System.out.print(+check);
    }
    else
        System.out.println("-1 ");
}
  
// Driver Code
public static void main(String args[])
{
    int N = 5;
    int K = 3;
  
    sumOddNumbers(N, K);
}
}
  
// This code is contributed by AbhiThakur

Python3

# Python3 implementation to represent 
# N as sum of K even numbers 
  
# Function to print the representation 
def sumOddNumbers(N, K):
  
    check = N - (K - 1) 
  
    # N must be greater than equal  
    # to 2*K and must be odd 
    if (check > 0 and check % 2 == 1): 
        for i in range(0, K - 1): 
            print("1", end = " ") 
  
        print(check, end = " ") 
  
    else:
        print("-1") 
  
# Driver Code 
N = 5
K = 3; 
  
sumOddNumbers(N, K) 
  
# This code is contributed by PratikBasu    

C#

// C# implementation to represent
// N as sum of K even numbers
using System;
  
class GFG{
  
// Function to print the representation
static void sumOddNumbers(int N, int K)
{
    int check = N - (K - 1);
  
    // N must be greater than equal 
    // to 2*K and must be odd
    if (check > 0 && check % 2 == 1)
    {
        for(int i = 0; i < K - 1; i++)
        {
           Console.Write("1 ");
        }
        Console.Write(+check);
    }
    else
        Console.WriteLine("-1 ");
}
  
// Driver Code
public static void Main()
{
    int N = 5;
    int K = 3;
  
    sumOddNumbers(N, K);
}
}
  
// This code is contributed by Code_Mech

JavaScript

<script>
  
// Javascript implementation to represent
// N as sum of K even numbers
  
// Function to print the representation
function sumOddNumbers(N, K)
{
    var check = N - (K - 1);
    var i;
  
    // N must be greater than equal to 2*K
    // and must be odd
    if (check > 0 && check % 2 == 1) {
        for (i = 0; i < K - 1; i++) {
             document.write("1,"+" ");
        }
        document.write(check + " ");
    }
    else
        document.write("-1");
}
  
// Driver Code
    var N = 5;
    var K = 3;
  
    sumOddNumbers(N, K);
      
</script>
Producción: 

1 1 3

 

Complejidad de tiempo: O(K)
 

Publicación traducida automáticamente

Artículo escrito por mayur_patil 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 *