Haz n usando 1 y 2 con un número mínimo de términos múltiplo de k

Dados dos enteros positivos n y k . n se puede representar como la suma de 1 y 2 de muchas maneras, utilizando múltiples números de términos. La tarea es encontrar el número mínimo de términos de 1 y 2 para hacer la suma n y también el número de términos debe ser múltiplo de k. Escriba “-1”, si no existe tal número de términos. 
Ejemplos: 
 

Input : n = 10, k = 2
Output : 6
10 can be represented as 2 + 2 + 2 + 2 + 1 + 1.
Number of terms used are 6 which is multiple of 2.

Input : n = 11, k = 4
Output : 8
10 can be represented as 2 + 2 + 2 + 1 + 1 + 1 + 1 + 1
Number of terms used are 8 which is multiple of 4.

Observe que el número máximo de términos utilizados para representar n como la suma de 1 y 2 es n, cuando 1 se suma n número de veces. Además, el número mínimo de términos será n/2 veces de 2s y se sumarán n%2 veces 1s. Por lo tanto, itere desde el número mínimo de términos hasta el número máximo de términos y verifique si hay algún múltiplo de k. 
 

C++

// C++ program to find minimum multiple of k
// terms used to make sum n using 1s and 2s.
#include<bits/stdc++.h>
using namespace std;
 
// Return minimum multiple of k terms used to
// make sum n using 1s and 2s.
int minMultipleK(int n, int k)
{
    // Minimum number of terms required to make
    // sum n using 1s and 2s.
    int min = (n / 2) + (n % 2);
 
    // Iterate from Minimum to maximum to find
    // multiple of k. Maximum number of terns is
    // n (Sum of all 1s)
    for (int i = min; i <= n; i++)
        if (i % k == 0)
            return i;
 
    return -1;
}
 
// Driven Program
int main()
{
    int n = 10, k = 2;
    cout << minMultipleK(n, k) << endl;
    return 0;
}

Java

// Java program to find minimum
// multiple of k terms used to
// make sum n using 1s and 2s.
import java.io.*;
 
class GFG
{
     
// Return minimum multiple of
// k terms used to make sum n
// using 1s and 2s.
static int minMultipleK(int n,
                        int k)
{
    // Minimum number of terms
    // required to make sum n
    // using 1s and 2s.
    int min = (n / 2) + (n % 2);
 
    // Iterate from Minimum to
    // maximum to findmultiple of k.
    // Maximum number of terms is
    // n (Sum of all 1s)
    for (int i = min; i <= n; i++)
        if (i % k == 0)
            return i;
 
    return -1;
}
 
// Driver Code
public static void main (String[] args)
{
    int n = 10, k = 2;
    System.out.println( minMultipleK(n, k));
}
}
 
// This code is contributed by anuj_67.

Python3

# Python3 program to find minimum multiple of k
# terms used to make sum n using 1s and 2s.
 
# Return minimum multiple of k terms
# used to make sum n using 1s and 2s.
def minMultipleK( n, k):
 
    # Minimum number of terms required
    # to make sum n using 1s and 2s.
    min = (n // 2) + (n % 2)
 
    # Iterate from Minimum to maximum to find
    #multiple of k. Maximum number of terns is
    # n (Sum of all 1s)
    for i in range(min, n + 1):
        if (i % k == 0):
            return i
 
    return -1
 
# Driver Code
if __name__=="__main__":
 
    n = 10
    k = 2
    print (minMultipleK(n, k))
     
# This code is contributed
# by ChitraNayal

C#

// C# program to find minimum
// multiple of k terms used to
// make sum n using 1s and 2s.
using System;
 
class GFG
{
     
// Return minimum multiple of
// k terms used to make sum n
// using 1s and 2s.
static int minMultipleK(int n,
                        int k)
{
    // Minimum number of terms
    // required to make sum n
    // using 1s and 2s.
    int min = (n / 2) + (n % 2);
 
    // Iterate from Minimum to
    // maximum to findmultiple of k.
    // Maximum number of terms is
    // n (Sum of all 1s)
    for (int i = min; i <= n; i++)
        if (i % k == 0)
            return i;
 
    return -1;
}
 
// Driver Code
public static void Main ()
{
    int n = 10, k = 2;
    Console.WriteLine( minMultipleK(n, k));
}
}
 
// This code is contributed by anuj_67.

PHP

<?php
// PHP program to find minimum multiple of
// k terms used to make sum n using 1s and 2s.
 
// Return minimum multiple of k terms used
// to make sum n using 1s and 2s.
function minMultipleK($n, $k)
                         
{
    // Minimum number of terms required
    // to make sum n using 1s and 2s.
    $min = ($n / 2) + ($n % 2);
 
    // Iterate from Minimum to maximum to
    // findmultiple of k. Maximum number
    // of terms is n (Sum of all 1s)
    for ($i = $min; $i <= $n; $i++)
        if ($i % $k == 0)
            return $i;
 
    return -1;
}
 
// Driver Code
$n = 10; $k = 2;
echo(minMultipleK($n, $k));
 
// This code is contributed
// by Mukul singh.

Javascript

<script>
 
// JavaScript program for the above approach
    
// Return minimum multiple of
// k terms used to make sum n
// using 1s and 2s.
function minMultipleK(n, k)
{
 
    // Minimum number of terms 
    // required to make sum n 
    // using 1s and 2s.
    let min = (n / 2) + (n % 2);
   
    // Iterate from Minimum to 
    // maximum to findmultiple of k. 
    // Maximum number of terms is
    // n (Sum of all 1s)
    for (let i = min; i <= n; i++)
        if (i % k == 0)
            return i;
   
    return -1;
}
 
// Driver Code
     
    let n = 10, k = 2;
    document.write( minMultipleK(n, k));
        
       // This code is contributed by splevel62.
</script>

Producción : 
 

6

Este artículo es una contribución de Anuj Chauhan . Si le gusta GeeksforGeeks y le gustaría contribuir, también puede escribir un artículo usando contribuya.geeksforgeeks.org o envíe su artículo por correo a contribuya@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.
Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
 

Publicación traducida automáticamente

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