Encuentre los primeros N enteros tales que la suma de sus dígitos sea igual a 10

Dado un entero N , la tarea es imprimir los primeros N enteros cuya suma de dígitos sea 10 .
Ejemplos: 
 

Entrada: N = 4 
Salida: 19 28 37 46
Entrada: N = 6 
Salida: 19 28 37 46 55 64 
 

Enfoque: Inicialice num = 19 para obtener el primer número de la serie, ahora agregue 9 al número anterior y verifique si la suma de los dígitos del nuevo número es 10 . En caso afirmativo, entonces este es el siguiente número de la serie, esto se debe a que la diferencia entre dos números consecutivos cualesquiera de la serie requerida es al menos 9 .
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
// sum of digits of n
int sum(int n)
{
    int sum = 0;
    while (n) {
 
        // Add the last digit to the sum
        sum = sum + n % 10;
 
        // Remove last digit
        n = n / 10;
    }
 
    // Return the sum of digits
    return sum;
}
 
// Function to print the first n numbers
// whose sum of digits is 10
void firstN(int n)
{
 
    // First number of the series is 19
    int num = 19, cnt = 1;
    while (cnt != n) {
 
        // If the sum of digits of the
        // current number is equal to 10
        if (sum(num) == 10) {
 
            // Print the number
            cout << num << " ";
            cnt++;
        }
 
        // Add 9 to the previous number
        num += 9;
    }
}
 
// Driver code
int main()
{
    int n = 10;
    firstN(n);
 
    return 0;
}

Java

// Java implementation of the approach
import java.util.*;
 
class GFG
{
 
// Function to return the
// sum of digits of n
static int sum(int n)
{
    int sum = 0;
    while (n > 0)
    {
 
        // Add the last digit to the sum
        sum = sum + n % 10;
 
        // Remove last digit
        n = n / 10;
    }
 
    // Return the sum of digits
    return sum;
}
 
// Function to print the first n numbers
// whose sum of digits is 10
static void firstN(int n)
{
 
    // First number of the series is 19
    int num = 19, cnt = 1;
    while (cnt != n)
    {
 
        // If the sum of digits of the
        // current number is equal to 10
        if (sum(num) == 10)
        {
 
            // Print the number
            System.out.print(num + " ");
            cnt++;
        }
 
        // Add 9 to the previous number
        num += 9;
    }
}
 
// Driver code
public static void main(String[] args)
{
    int n = 10;
    firstN(n);
}
}
 
// This code is contributed by Rajput-Ji

Python3

# Python3 implementation of the approach
 
# Function to return the
# sum of digits of n
def sum(n) :
 
    sum = 0;
    while (n) :
 
        # Add the last digit to the sum
        sum = sum + n % 10;
 
        # Remove last digit
        n = n // 10;
 
    # Return the sum of digits
    return sum;
 
# Function to print the first n numbers
# whose sum of digits is 10
def firstN(n) :
 
    # First number of the series is 19
    num = 19; cnt = 1;
     
    while (cnt != n) :
 
        # If the sum of digits of the
        # current number is equal to 10
        if (sum(num) == 10) :
 
            # Print the number
            print(num,end= " ");
            cnt += 1;
 
        # Add 9 to the previous number
        num += 9;
 
# Driver code
if __name__ == "__main__" :
 
    n = 10;
    firstN(n);
     
# This code is contributed by AnkitRai01

C#

// C# implementation of the approach
using System;
 
class GFG
{
 
// Function to return the
// sum of digits of n
static int sum(int n)
{
    int sum = 0;
    while (n > 0)
    {
 
        // Add the last digit to the sum
        sum = sum + n % 10;
 
        // Remove last digit
        n = n / 10;
    }
 
    // Return the sum of digits
    return sum;
}
 
// Function to print the first n numbers
// whose sum of digits is 10
static void firstN(int n)
{
 
    // First number of the series is 19
    int num = 19, cnt = 1;
    while (cnt != n)
    {
 
        // If the sum of digits of the
        // current number is equal to 10
        if (sum(num) == 10)
        {
 
            // Print the number
            Console.Write(num + " ");
            cnt++;
        }
 
        // Add 9 to the previous number
        num += 9;
    }
}
 
// Driver code
public static void Main(String[] args)
{
    int n = 10;
    firstN(n);
}
}
 
// This code is contributed by PrinciRaj1992

Javascript

<script>
 
// JavaScript implementation of the approach
 
    // Function to return the
    // sum of digits of n
    function sum(n) {
        var sum = 0;
        while (n > 0) {
 
            // Add the last digit to the sum
            sum = sum + n % 10;
 
            // Remove last digit
            n = parseInt(n / 10);
        }
 
        // Return the sum of digits
        return sum;
    }
 
    // Function to print the first n numbers
    // whose sum of digits is 10
    function firstN(n) {
 
        // First number of the series is 19
        var num = 19, cnt = 1;
        while (cnt != n) {
 
            // If the sum of digits of the
            // current number is equal to 10
            if (sum(num) == 10) {
 
                // Print the number
                document.write(num + " ");
                cnt++;
            }
 
            // Add 9 to the previous number
            num += 9;
        }
    }
 
    // Driver code
     
        var n = 10;
        firstN(n);
 
// This code contributed by Rajput-Ji
 
</script>
Producción: 

19 28 37 46 55 64 73 82 91

 

Complejidad del tiempo:   O(n*log(n))

Espacio Auxiliar: O(1)

Publicación traducida automáticamente

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