Encuentre un número x tal que la suma de x y sus dígitos sea igual a n dada.

Dado un número positivo n. Necesitamos encontrar un número x tal que la suma de los dígitos de x sea igual a n. 
Si tal x no es posible imprima -1.
Ejemplos: 
 

Input : n = 21
Output : x = 15
Explanation : x + its digit sum = 15 + 1 + 5 = 21 

Input : n = 5
Output : -1

Iteramos de 1 a n y para cada número intermedio, x encuentra su suma de dígitos y luego la sumamos a x, si eso es igual a n, entonces x será nuestra respuesta requerida. 
 

    // iterate from 1 to n. For every no.
    // check if its digit sum with it is
    // equal to n.
    for (int i = 0; i <= n; i++)
        if (i + digSum(i)  == n)
            return i;

    return -1;

C++

// CPP program to find x such that x +
// digSum(x) is equal to n.
#include <bits/stdc++.h>
using namespace std;
 
// utility function for digit sum
int digSum(int n)
{
    int sum = 0, rem = 0;
    while (n) {
        rem = n % 10;
        sum += rem;
        n /= 10;
    }
    return sum;
}
 
// function for finding x
int findX(int n)
{
    // iterate from 1 to n. For every no.
    // check if its digit sum with it is
    // equal to n.
    for (int i = 0; i <= n; i++)
        if (i + digSum(i) == n)
            return i;
     
    // if no such i found return -1
    return -1;
}
 
// driver function
int main()
{
    int n = 43;
    cout << "x = " << findX(n);
    return 0;
}

Java

// Java program to find x such that x +
// digSum(x) is equal to n.
class GFG
{
     
    // utility function for digit sum
    static int digSum(int n)
    {
        int sum = 0, rem = 0;
         
        while (n>0) {
            rem = n % 10;
            sum += rem;
            n /= 10;
        }
         
        return sum;
    }
     
    // function for finding x
    static int findX(int n)
    {
         
        // iterate from 1 to n. For every no.
        // check if its digit sum with it is
        // equal to n.
        for (int i = 0; i <= n; i++)
            if (i + digSum(i) == n)
                return i;
         
        // if no such i found return -1
        return -1;
    }
     
    // Driver code
    public static void main (String[] args)
    {
        int n = 43;
         
        System.out.println("x = "+findX(n));
    }
}
 
// This code is contributed by Anant Agarwal.

Python3

# Python3 program to find
# x such that dx + igSum(x)
# is equal to n.
 
# utility function
# for digit sum
def digSum(n):
    sum = 0;
    rem = 0;
    while(n):
        rem = n % 10;
        sum = sum + rem;
        n = int(n / 10);
    return sum;
 
# function for finding x
def findX(n):
     
    # iterate from 1 to n.
    # For every no.
    # check if its digit
    # sum with it is# equal to n.
    for i in range(n + 1):
        if (i + digSum(i) == n):
            return i;
     
    # if no such i
    # found return -1
    return -1;
 
# Driver Code
n = 43;
print("x = ", findX(n));
 
# This code is contributed by mits

C#

// C# program to find x such that
// x + digSum(x) is equal to n.
using System;
 
class GFG {
     
    // utility function for digit sum
    static int digSum(int n)
    {
        int sum = 0, rem = 0;
         
        while (n > 0)
        {
            rem = n % 10;
            sum += rem;
            n /= 10;
        }
         
        return sum;
    }
     
    // function for finding x
    static int findX(int n)
    {
         
        // iterate from 1 to n. For every no.
        // check if its digit sum with it is
        // equal to n.
        for (int i = 0; i <= n; i++)
            if (i + digSum(i) == n)
                return i;
         
        // if no such i found return -1
        return -1;
    }
     
    // Driver code
    public static void Main()
    {
        int n = 43;
         
        Console.Write("x = " + findX(n));
    }
}
 
// This code is contributed by vt_m.

PHP

<?php
// PHP program to find x such that
// dx + igSum(x) is equal to n.
 
// utility function
// for digit sum
function digSum($n)
{
    $sum = 0; $rem = 0;
    while ($n)
    {
        $rem = $n % 10;
        $sum += $rem;
        $n /= 10;
    }
    return $sum;
}
 
// function for finding x
function findX($n)
{
     
    // iterate from 1 to n.
    // For every no.
    // check if its digit
    // sum with it is
    // equal to n.
    for ($i = 0; $i <= $n; $i++)
        if ($i + digSum($i) == $n)
            return $i;
     
    // if no such i
    // found return -1
    return -1;
}
 
    // Driver Code
    $n = 43;
    echo "x = " , findX($n);
 
// This code is contributed by vt_m.
?>

Javascript

<script>
 
// Javascript program to find x such that x +
// digSum(x) is equal to n.
  
    // utility function for digit sum
    function digSum(n)
    {
        let sum = 0, rem = 0;
           
        while (n>0) {
            rem = n % 10;
            sum += rem;
            n = Math.floor(n / 10);
        }
           
        return sum;
    }
       
    // function for finding x
    function findX(n)
    {
           
        // iterate from 1 to n. For every no.
        // check if its digit sum with it is
        // equal to n.
        for (let i = 0; i <= n; i++)
            if (i + digSum(i) == n)
                return i;
           
        // if no such i found return -1
        return -1;
    }
 
// driver program
 
    let n = 43;
           
    document.write("x = "+findX(n));
     
</script>

Producción:  

x = 35

Este artículo es una contribución de Shivam Pradhan (anuj_charm) . 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 *