Minimizar la suma de dígitos de A y B tal que A + B = N

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:
(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>
Producción: 

21

 

Complejidad de tiempo: O (log n)

Espacio Auxiliar: O(1)

Publicación traducida automáticamente

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