# Numbers in a Range with given Digital Root

Given an integer **K** and a range of consecutive numbers **[L, R]**. The task is to count the numbers from the given range which have digital root as K (1 â‰¤ K â‰¤ 9). Digital root is sum of digits of a number until it becomes a single digit number. For example, 256 -> 2 + 5 + 6 = 13 -> 1 + 3 = 4.

**Examples:**

Attention reader! Don’t stop learning now. Get hold of all the important mathematical concepts for competitive programming with the **Essential Maths for CP Course** at a student-friendly price. To complete your preparation from learning a language to DS Algo and many more, please refer **Complete Interview Preparation Course****.**

Input:L = 10, R = 22, K = 3Output:2

12 and 21 are the only numbers from the range whose digit sum is 3.

Input:L = 100, R = 200, K = 5Output:11

**Approach:**

- First thing is to note that for any number Sum of Digits is equal to Number % 9. If remainder is 0, then sum of digits is 9.
- So if K = 9, then replace K with 0.
- Task, now is to find count of numbers in range L to R with modulo 9 equal to K.
- Divide the entire range into the maximum possible groups of 9 starting with L (TotalRange / 9), since in each range there will be exactly one number with modulo 9 equal to K.
- Loop over rest number of elements from R to R – count of rest elements, and check if any number satisfies the condition.

Below is the implementation of the above approach:

## C++

`// C++ implementation of the approach` `#include <bits/stdc++.h>` `#define ll long long int` `using` `namespace` `std;` `// Function to return the count` `// of required numbers` `int` `countNumbers(` `int` `L, ` `int` `R, ` `int` `K)` `{` ` ` `if` `(K == 9)` ` ` `K = 0;` ` ` `// Count of numbers present` ` ` `// in given range` ` ` `int` `totalnumbers = R - L + 1;` ` ` `// Number of groups of 9 elements` ` ` `// starting from L` ` ` `int` `factor9 = totalnumbers / 9;` ` ` `// Left over elements not covered` ` ` `// in factor 9` ` ` `int` `rem = totalnumbers % 9;` ` ` `// One Number in each group of 9` ` ` `int` `ans = factor9;` ` ` `// To check if any number in rem` ` ` `// satisfy the property` ` ` `for` `(` `int` `i = R; i > R - rem; i--) {` ` ` `int` `rem1 = i % 9;` ` ` `if` `(rem1 == K)` ` ` `ans++;` ` ` `}` ` ` `return` `ans;` `}` `// Driver code` `int` `main()` `{` ` ` `int` `L = 10;` ` ` `int` `R = 22;` ` ` `int` `K = 3;` ` ` `cout << countNumbers(L, R, K);` ` ` `return` `0;` `}` |

## Java

`// Java implementation of the approach` `class` `GFG {` `// Function to return the count` `// of required numbers` ` ` `static` `int` `countNumbers(` `int` `L, ` `int` `R, ` `int` `K) {` ` ` `if` `(K == ` `9` `) {` ` ` `K = ` `0` `;` ` ` `}` ` ` `// Count of numbers present` ` ` `// in given range` ` ` `int` `totalnumbers = R - L + ` `1` `;` ` ` `// Number of groups of 9 elements` ` ` `// starting from L` ` ` `int` `factor9 = totalnumbers / ` `9` `;` ` ` `// Left over elements not covered` ` ` `// in factor 9` ` ` `int` `rem = totalnumbers % ` `9` `;` ` ` `// One Number in each group of 9` ` ` `int` `ans = factor9;` ` ` `// To check if any number in rem` ` ` `// satisfy the property` ` ` `for` `(` `int` `i = R; i > R - rem; i--) {` ` ` `int` `rem1 = i % ` `9` `;` ` ` `if` `(rem1 == K) {` ` ` `ans++;` ` ` `}` ` ` `}` ` ` `return` `ans;` ` ` `}` `// Driver code` ` ` `public` `static` `void` `main(String[] args) {` ` ` `int` `L = ` `10` `;` ` ` `int` `R = ` `22` `;` ` ` `int` `K = ` `3` `;` ` ` `System.out.println(countNumbers(L, R, K));` ` ` `}` `}` `/* This code contributed by PrinciRaj1992 */` |

## Python3

`# Python3 implementation of the approach` `# Function to return the count` `# of required numbers` `def` `countNumbers(L, R, K):` ` ` `if` `(K ` `=` `=` `9` `):` ` ` `K ` `=` `0` ` ` `# Count of numbers present` ` ` `# in given range` ` ` `totalnumbers ` `=` `R ` `-` `L ` `+` `1` ` ` `# Number of groups of 9 elements` ` ` `# starting from L` ` ` `factor9 ` `=` `totalnumbers ` `/` `/` `9` ` ` `# Left over elements not covered` ` ` `# in factor 9` ` ` `rem ` `=` `totalnumbers ` `%` `9` ` ` `# One Number in each group of 9` ` ` `ans ` `=` `factor9` ` ` `# To check if any number in rem` ` ` `# satisfy the property` ` ` `for` `i ` `in` `range` `(R, R ` `-` `rem, ` `-` `1` `):` ` ` `rem1 ` `=` `i ` `%` `9` ` ` `if` `(rem1 ` `=` `=` `K):` ` ` `ans ` `+` `=` `1` ` ` ` ` `return` `ans` `# Driver code` `L ` `=` `10` `R ` `=` `22` `K ` `=` `3` `print` `(countNumbers(L, R, K))` `# This code is contributed` `# by mohit kumar` |

## C#

`// C# implementation of the approach` `using` `System ;` `class` `GFG` `{` ` ` `// Function to return the count` ` ` `// of required numbers` ` ` `static` `int` `countNumbers(` `int` `L, ` `int` `R, ` `int` `K)` ` ` `{` ` ` `if` `(K == 9)` ` ` `{` ` ` `K = 0;` ` ` `}` ` ` `// Count of numbers present` ` ` `// in given range` ` ` `int` `totalnumbers = R - L + 1;` ` ` `// Number of groups of 9 elements` ` ` `// starting from L` ` ` `int` `factor9 = totalnumbers / 9;` ` ` `// Left over elements not covered` ` ` `// in factor 9` ` ` `int` `rem = totalnumbers % 9;` ` ` `// One Number in each group of 9` ` ` `int` `ans = factor9;` ` ` `// To check if any number in rem` ` ` `// satisfy the property` ` ` `for` `(` `int` `i = R; i > R - rem; i--)` ` ` `{` ` ` `int` `rem1 = i % 9;` ` ` `if` `(rem1 == K)` ` ` `{` ` ` `ans++;` ` ` `}` ` ` `}` ` ` `return` `ans;` ` ` `}` ` ` `// Driver code` ` ` `public` `static` `void` `Main()` ` ` `{` ` ` `int` `L = 10;` ` ` `int` `R = 22;` ` ` `int` `K = 3;` ` ` ` ` `Console.WriteLine(countNumbers(L, R, K));` ` ` `}` `}` `/* This code is contributed by Ryuga */` |

## PHP

`<?php` `// PHP implementation of the approach` `// Function to return the count` `// of required numbers` `function` `countNumbers(` `$L` `, ` `$R` `, ` `$K` `)` `{` ` ` `if` `(` `$K` `== 9)` ` ` `$K` `= 0;` ` ` `// Count of numbers present` ` ` `// in given range` ` ` `$totalnumbers` `= ` `$R` `- ` `$L` `+ 1;` ` ` `// Number of groups of 9 elements` ` ` `// starting from L` ` ` `$factor9` `= ` `intval` `(` `$totalnumbers` `/ 9);` ` ` `// Left over elements not covered` ` ` `// in factor 9` ` ` `$rem` `= ` `$totalnumbers` `% 9;` ` ` `// One Number in each group of 9` ` ` `$ans` `= ` `$factor9` `;` ` ` `// To check if any number in rem` ` ` `// satisfy the property` ` ` `for` `(` `$i` `= ` `$R` `; ` `$i` `> ` `$R` `- ` `$rem` `; ` `$i` `--)` ` ` `{` ` ` `$rem1` `= ` `$i` `% 9;` ` ` `if` `(` `$rem1` `== ` `$K` `)` ` ` `$ans` `++;` ` ` `}` ` ` `return` `$ans` `;` `}` `// Driver code` `$L` `= 10;` `$R` `= 22;` `$K` `= 3;` `echo` `countNumbers(` `$L` `, ` `$R` `, ` `$K` `);` `// This code is contributed by Ita_c` `?>` |

## Javascript

`<script>` `// Javascript implementation of the approach` `// Function to return the count` `// of required numbers` `function` `countNumbers(L, R, K)` `{` ` ` `if` `(K == 9)` ` ` `{` ` ` `K = 0;` ` ` `}` ` ` `// Count of numbers present` ` ` `// in given range` ` ` `var` `totalnumbers = R - L + 1;` ` ` `// Number of groups of 9 elements` ` ` `// starting from L` ` ` `var` `factor9 = totalnumbers / 9;` ` ` `// Left over elements not covered` ` ` `// in factor 9` ` ` `var` `rem = totalnumbers % 9;` ` ` `// One Number in each group of 9` ` ` `var` `ans = factor9;` ` ` `// To check if any number in rem` ` ` `// satisfy the property` ` ` `for` `(` `var` `i = R; i > R - rem; i--)` ` ` `{` ` ` `var` `rem1 = i % 9;` ` ` `if` `(rem1 == K)` ` ` `{` ` ` `ans++;` ` ` `}` ` ` `}` ` ` `return` `ans;` `}` ` ` `// Driver Code` `var` `L = 10;` `var` `R = 22;` `var` `K = 3;` `document.write(Math.round(countNumbers(L, R, K)));` `// This code is contributed by Ankita saini` ` ` `</script>` |

**Output:**

2