Dado un número entero N , la tarea es encontrar dos números enteros positivos A y B tales que A + B = N y la suma de los dígitos de A y B sea mínima. Imprime la suma de los dígitos de A y B.
Ejemplos:
Entrada: N = 16
Salida: 7
(10 + 6) = 16 y (1 + 0 + 6) = 7
es el mínimo posible.
Entrada: N = 1000
Salida: 10
(900 + 100) = 1000
Enfoque: si N es una potencia de 10 , la respuesta será 10 ; de lo contrario, la respuesta será la suma de los dígitos de N. Es claro que la respuesta no puede ser menor que la suma de dígitos de N porque la suma de dígitos decrece cada vez que se genera un acarreo. Además, cuando N es una potencia de 10 , obviamente la respuesta no puede ser 1 , por lo que la respuesta será 10 . Porque A o B no pueden ser 0 ya que ambos deben ser números positivos.
A continuación se muestra la implementación del enfoque anterior:
C++
// C++ implementation of the approach #include <bits/stdc++.h> using namespace std; // Function to return the minimum // possible sum of digits of A // and B such that A + B = n int minSum(int n) { // Find the sum of digits of n int sum = 0; while (n > 0) { sum += (n % 10); n /= 10; } // If num is a power of 10 if (sum == 1) return 10; return sum; } // Driver code int main() { int n = 1884; cout << minSum(n); return 0; }
Java
// Java implementation of the approach class GFG { // Function to return the minimum // possible sum of digits of A // and B such that A + B = n static int minSum(int n) { // Find the sum of digits of n int sum = 0; while (n > 0) { sum += (n % 10); n /= 10; } // If num is a power of 10 if (sum == 1) return 10; return sum; } // Driver code public static void main(String[] args) { int n = 1884; System.out.print(minSum(n)); } } // This code is contributed by 29AjayKumar
Python3
# Python implementation of the approach # Function to return the minimum # possible sum of digits of A # and B such that A + B = n def minSum(n) : # Find the sum of digits of n sum = 0; while (n > 0) : sum += (n % 10); n //= 10; # If num is a power of 10 if (sum == 1) : return 10; return sum; # Driver code if __name__ == "__main__" : n = 1884; print(minSum(n)); # This code is contributed by AnkitRai01
C#
// C# implementation of the approach using System; class GFG { // Function to return the minimum // possible sum of digits of A // and B such that A + B = n static int minSum(int n) { // Find the sum of digits of n int sum = 0; while (n > 0) { sum += (n % 10); n /= 10; } // If num is a power of 10 if (sum == 1) return 10; return sum; } // Driver code public static void Main(String[] args) { int n = 1884; Console.Write(minSum(n)); } } // This code is contributed by PrinciRaj1992
Javascript
<script> // Javascript implementation of the approach // Function to return the minimum // possible sum of digits of A // and B such that A + B = n function minSum(n) { // Find the sum of digits of n var sum = 0; while (n > 0) { sum += (n % 10); n = parseInt(n/10); } // If num is a power of 10 if (sum == 1) return 10; return sum; } // Driver code var n = 1884; document.write( minSum(n)); // This code is contributed by famously. </script>
21
Complejidad de tiempo: O (log n)
Espacio Auxiliar: O(1)