Рубрики

Первые N слагаемых, сумма цифр которых кратна 10

Для заданного целого числа N задача состоит в том, чтобы напечатать первые N слагаемых, сумма цифр которых кратна 10 . Первые несколько терминов серии: 19, 28, 37, 46, 55,…

Примеры:

Input: N = 5
Output: 19 28 37 46 55

Input: N = 10
Output: 19 28 37 46 55 64 73 82 91 109

Подход: можно заметить, что, чтобы получить N- й член требуемой серии, найдите сумму цифр N. Если сумма уже кратна 10, тогда добавьте цифру 0 в конце N, иначе добавьте минимально возможную цифру в конце так, чтобы новая сумма цифр была кратна 10 .

For example, to get the 19th term, since the sum of digits is already a multiple of 10 then append 0 and 190 is the 19th term of the series.
For N = 5, the minimum digit that can be appended to make the sum of digits as a multiple of 10 is 5 and 55 is the 5th term of the series.

Ниже приведена реализация вышеуказанного подхода:

C ++

#include <bits/stdc++.h>

using namespace std;

  

const int TEN = 10;

  
// Функция для возврата
// сумма цифр n

int digitSum(int n)

{

    int sum = 0;

    while (n > 0) {

  

        // Добавить последнюю цифру к сумме

        sum += n % TEN;

  

        // Удалить последнюю цифру

        n /= TEN;

    }

  

    return sum;

}

  
// Функция для возврата n-го члена
// требуемой серии

int getNthTerm(int n)

{

    int sum = digitSum(n);

  

    // Если сумма цифры уже

    // кратно 10, затем добавляем 0

    if (sum % TEN == 0)

        return (n * TEN);

  

    // Для сохранения минимальной цифры

    // это должно быть добавлено

    int extra = TEN - (sum % TEN);

  

    // Возвращаем n после добавления

    // требуемая цифра

    return ((n * TEN) + extra);

}

  
// Функция для печати первых n терминов
// требуемой серии

void firstNTerms(int n)

{

    for (int i = 1; i <= n; i++)

        cout << getNthTerm(i) << " ";

}

  
// Код драйвера

int main()

{

    int n = 10;

  

    firstNTerms(n);

  

    return 0;

}

Джава

// Java реализация вышеуказанного подхода

class GFG 

{

    final static int TEN = 10

      

    // Функция для возврата

    // сумма цифр n

    static int digitSum(int n) 

    

        int sum = 0

        while (n > 0

        

      

            // Добавить последнюю цифру к сумме

            sum += n % TEN; 

      

            // Удалить последнюю цифру

            n /= TEN; 

        

        return sum; 

    

      

    // Функция для возврата n-го члена

    // требуемой серии

    static int getNthTerm(int n) 

    

        int sum = digitSum(n); 

      

        // Если сумма цифры уже

        // кратно 10, затем добавляем 0

        if (sum % TEN == 0

            return (n * TEN); 

      

        // Для сохранения минимальной цифры

        // это должно быть добавлено

        int extra = TEN - (sum % TEN); 

      

        // Возвращаем n после добавления

        // требуемая цифра

        return ((n * TEN) + extra); 

    

      

    // Функция для печати первых n терминов

    // требуемой серии

    static void firstNTerms(int n) 

    

        for (int i = 1; i <= n; i++) 

            System.out.print(getNthTerm(i) + " "); 

    

      

    // Код драйвера

    public static void main (String[] args) 

    

        int n = 10

      

        firstNTerms(n); 

    

}

  
// Этот код предоставлен AnkitRai01

python3

# Python3 код для реализации выше

TEN = 10

  
# Функция для возврата
# сумма цифр n

def digitSum(n):

    sum = 0

    while (n > 0):

  

        # Добавить последнюю цифру к сумме

        sum += n % TEN

  

        # Удалить последнюю цифру

        n //= TEN

  

    return sum

  
# Функция для возврата n-го члена
# требуемой серии

def getNthTerm(n):

    sum = digitSum(n)

  

    # Если сумма цифр уже

    # кратное 10, затем добавить 0

    if (sum % TEN == 0):

        return (n * TEN)

  

    # Хранить минимальную цифру

    # это должно быть добавлено

    extra = TEN - (sum % TEN)

  

    # Вернуть n после добавления

    # требуемая цифра

    return ((n * TEN) + extra)

  
# Функция для печати первых n терминов
№ требуемой серии

def firstNTerms(n):

    for i in range(1, n + 1):

        print(getNthTerm(i), end = " ")

  
# Код драйвера

n = 10

  
firstNTerms(n)

  
# Этот код предоставлен Мохитом Кумаром

C #

// C # Программа для поиска уникальных элементов
// в связанных списках

using System;

      

class GFG 

{

    readonly static int TEN = 10; 

      

    // Функция для возврата

    // сумма цифр n

    static int digitSum(int n) 

    

        int sum = 0; 

        while (n > 0) 

        

      

            // Добавить последнюю цифру к сумме

            sum += n % TEN; 

      

            // Удалить последнюю цифру

            n /= TEN; 

        

        return sum; 

    

      

    // Функция для возврата n-го члена

    // требуемой серии

    static int getNthTerm(int n) 

    

        int sum = digitSum(n); 

      

        // Если сумма цифры уже

        // кратно 10, затем добавляем 0

        if (sum % TEN == 0) 

            return (n * TEN); 

      

        // Для сохранения минимальной цифры

        // это должно быть добавлено

        int extra = TEN - (sum % TEN); 

      

        // Возвращаем n после добавления

        // требуемая цифра

        return ((n * TEN) + extra); 

    

      

    // Функция для печати первых n терминов

    // требуемой серии

    static void firstNTerms(int n) 

    

        for (int i = 1; i <= n; i++) 

            Console.Write(getNthTerm(i) + " "); 

    

      

    // Код драйвера

    public static void Main (String[] args) 

    

        int n = 10; 

      

        firstNTerms(n); 

    

}

  
// Этот код предоставлен 29AjayKumar

Выход:

19 28 37 46 55 64 73 82 91 109

Рекомендуемые посты:

Первые N слагаемых, сумма цифр которых кратна 10

0.00 (0%) 0 votes