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