Open in App
Not now

First N terms whose sum of digits is a multiple of 10

• Difficulty Level : Medium
• Last Updated : 16 Dec, 2022

Given an integer N, the task is to print the first N terms whose sum of digits is a multiple of 10. First few terms of the series are 19, 28, 37, 46, 55, …
Examples:

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

Approach: It can be observed that to get the Nth term of the required series, find the sum of the digits of N. If the sum is already a multiple of 10 then append digit 0 in the end of N else append the minimum possible digit in the end such that the new sum of digits is a multiple of 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.

Below is the implementation of the above approach:

C++

 `#include ` `using` `namespace` `std;`   `const` `int` `TEN = 10;`   `// Function to return the` `// sum of digits of n` `int` `digitSum(``int` `n)` `{` `    ``int` `sum = 0;` `    ``while` `(n > 0) {`   `        ``// Add last digit to the sum` `        ``sum += n % TEN;`   `        ``// Remove last digit` `        ``n /= TEN;` `    ``}`   `    ``return` `sum;` `}`   `// Function to return the nth term` `// of the required series` `int` `getNthTerm(``int` `n)` `{` `    ``int` `sum = digitSum(n);`   `    ``// If sum of digit is already` `    ``// a multiple of 10 then append 0` `    ``if` `(sum % TEN == 0)` `        ``return` `(n * TEN);`   `    ``// To store the minimum digit` `    ``// that must be appended` `    ``int` `extra = TEN - (sum % TEN);`   `    ``// Return n after appending` `    ``// the required digit` `    ``return` `((n * TEN) + extra);` `}`   `// Function to print the first n terms` `// of the required series` `void` `firstNTerms(``int` `n)` `{` `    ``for` `(``int` `i = 1; i <= n; i++)` `        ``cout << getNthTerm(i) << ``" "``;` `}`   `// Driver code` `int` `main()` `{` `    ``int` `n = 10;`   `    ``firstNTerms(n);`   `    ``return` `0;` `}`

Java

 `// Java implementation of the above approach` `import` `java.io.*;` `class` `GFG ` `{` `    ``final` `static` `int` `TEN = ``10``; ` `    `  `    ``// Function to return the ` `    ``// sum of digits of n ` `    ``static` `int` `digitSum(``int` `n) ` `    ``{ ` `        ``int` `sum = ``0``; ` `        ``while` `(n > ``0``) ` `        ``{ ` `    `  `            ``// Add last digit to the sum ` `            ``sum += n % TEN; ` `    `  `            ``// Remove last digit ` `            ``n /= TEN; ` `        ``} ` `        ``return` `sum; ` `    ``} ` `    `  `    ``// Function to return the nth term ` `    ``// of the required series ` `    ``static` `int` `getNthTerm(``int` `n) ` `    ``{ ` `        ``int` `sum = digitSum(n); ` `    `  `        ``// If sum of digit is already ` `        ``// a multiple of 10 then append 0 ` `        ``if` `(sum % TEN == ``0``) ` `            ``return` `(n * TEN); ` `    `  `        ``// To store the minimum digit ` `        ``// that must be appended ` `        ``int` `extra = TEN - (sum % TEN); ` `    `  `        ``// Return n after appending ` `        ``// the required digit ` `        ``return` `((n * TEN) + extra); ` `    ``} ` `    `  `    ``// Function to print the first n terms ` `    ``// of the required series ` `    ``static` `void` `firstNTerms(``int` `n) ` `    ``{ ` `        ``for` `(``int` `i = ``1``; i <= n; i++) ` `            ``System.out.print(getNthTerm(i) + ``" "``); ` `    ``} ` `    `  `    ``// Driver code ` `    ``public` `static` `void` `main (String[] args) ` `    ``{ ` `        ``int` `n = ``10``; ` `    `  `        ``firstNTerms(n); ` `    ``} ` `}`   `// This code is contributed by AnkitRai01`

Python3

 `# Python3 code for above implementation` `TEN ``=` `10`   `# Function to return the` `# sum of digits of n` `def` `digitSum(n):` `    ``sum` `=` `0` `    ``while` `(n > ``0``):`   `        ``# Add last digit to the sum` `        ``sum` `+``=` `n ``%` `TEN`   `        ``# Remove last digit` `        ``n ``/``/``=` `TEN`   `    ``return` `sum`   `# Function to return the nth term` `# of the required series` `def` `getNthTerm(n):` `    ``sum` `=` `digitSum(n)`   `    ``# If sum of digit is already` `    ``# a multiple of 10 then append 0` `    ``if` `(``sum` `%` `TEN ``=``=` `0``):` `        ``return` `(n ``*` `TEN)`   `    ``# To store the minimum digit` `    ``# that must be appended` `    ``extra ``=` `TEN ``-` `(``sum` `%` `TEN)`   `    ``# Return n after appending` `    ``# the required digit` `    ``return` `((n ``*` `TEN) ``+` `extra)`   `# Function to print the first n terms` `# of the required series` `def` `firstNTerms(n):` `    ``for` `i ``in` `range``(``1``, n ``+` `1``):` `        ``print``(getNthTerm(i), end ``=` `" "``)`   `# Driver code` `n ``=` `10`   `firstNTerms(n)`   `# This code is contributed by Mohit Kumar`

C#

 `// C# Program to Find the Unique elements ` `// in linked lists` `using` `System;` `    `  `class` `GFG ` `{` `    ``readonly` `static` `int` `TEN = 10; ` `    `  `    ``// Function to return the ` `    ``// sum of digits of n ` `    ``static` `int` `digitSum(``int` `n) ` `    ``{ ` `        ``int` `sum = 0; ` `        ``while` `(n > 0) ` `        ``{ ` `    `  `            ``// Add last digit to the sum ` `            ``sum += n % TEN; ` `    `  `            ``// Remove last digit ` `            ``n /= TEN; ` `        ``} ` `        ``return` `sum; ` `    ``} ` `    `  `    ``// Function to return the nth term ` `    ``// of the required series ` `    ``static` `int` `getNthTerm(``int` `n) ` `    ``{ ` `        ``int` `sum = digitSum(n); ` `    `  `        ``// If sum of digit is already ` `        ``// a multiple of 10 then append 0 ` `        ``if` `(sum % TEN == 0) ` `            ``return` `(n * TEN); ` `    `  `        ``// To store the minimum digit ` `        ``// that must be appended ` `        ``int` `extra = TEN - (sum % TEN); ` `    `  `        ``// Return n after appending ` `        ``// the required digit ` `        ``return` `((n * TEN) + extra); ` `    ``} ` `    `  `    ``// Function to print the first n terms ` `    ``// of the required series ` `    ``static` `void` `firstNTerms(``int` `n) ` `    ``{ ` `        ``for` `(``int` `i = 1; i <= n; i++) ` `            ``Console.Write(getNthTerm(i) + ``" "``); ` `    ``} ` `    `  `    ``// Driver code ` `    ``public` `static` `void` `Main (String[] args) ` `    ``{ ` `        ``int` `n = 10; ` `    `  `        ``firstNTerms(n); ` `    ``} ` `}`   `// This code is contributed by 29AjayKumar`

Javascript

 ``

Output:

`19 28 37 46 55 64 73 82 91 109`

My Personal Notes arrow_drop_up
Related Articles