Count numbers with unit digit k in given range

• Difficulty Level : Medium
• Last Updated : 30 Apr, 2021

Here given a range from low to high and given a number k.You have to find out the number of count which a number has same digit as k
Examples:

Input: low = 2, high = 35, k = 2
Output: 4
Numbers are 2, 12, 22, 32

Input: low = 3, high = 30, k = 3
Output: 3
Numbers are  3, 13, 23

A naive approach is to traverse through all numbers in given range and check last digit of every number and increment result if last digit is equal to k.

C++

 // Simple CPP program to count numbers with// last digit as k in given range.#include using namespace std; // Returns count of numbers with k as last// digit.int counLastDigitK(int low, int high, int k){    int count = 0;    for (int i = low; i <= high; i++)        if (i % 10 == k)            count++;      return count;} // Driver Programint main(){    int low = 3, high = 35, k = 3;    cout << counLastDigitK(low, high, k);    return 0;}

Java

 // Simple Java program to count numbers with// last digit as k in given range.import java.util.*;import java.lang.*; public class GfG{    // Returns count of numbers with    // k as last digit.    public static int counLastDigitK(int low,                                int high, int k)    {        int count = 0;        for (int i = low; i <= high; i++)            if (i % 10 == k)                count++;        return count;    }         // driver function    public static void main(String args[])    {        int low = 3, high = 35, k = 3;        System.out.println(counLastDigitK(low, high, k));    }} // This code is contributed by Sagar Shukla

Python3

 # Simple python program to count numbers with# last digit as k in given range. # Returns count of numbers with k as last# digit.def counLastDigitK(low, high, k):    count = 0    for i in range(low, high+1):        if (i % 10 == k):            count+=1    return count  # Driver Programlow = 3high = 35k = 3print(counLastDigitK(low, high, k)) # This code is contributed by# Smitha Dinesh Semwal

C#

 // Simple C# program to count numbers with// last digit as k in given range.using System; public class GfG{    // Returns count of numbers with    // k as last digit.    public static int counLastDigitK(int low,                                int high, int k)    {        int count = 0;        for (int i = low; i <= high; i++)            if (i % 10 == k)                count++;        return count;    }         // Driver function    public static void Main()    {        int low = 3, high = 35, k = 3;        Console.WriteLine(counLastDigitK(low, high, k));    }} // This code is contributed by vt_m



Javascript



Output:

4

Time Complexity: O(high – low)

An efficient solution is based on the fact that every digit appears once as the last digit in every 10 consecutive numbers.

C++

 // Efficient CPP program to count numbers // with last digit as k in given range.#include using namespace std; // Returns count of numbers with k as last// digit.int countLastDigitK(long long low,        long long high, long long K){   long long mlow = 10 * ceil(low/10.0);  long long mhigh = 10 * floor(high/10.0);   int count = (mhigh - mlow)/10;  if (high % 10 >= K)    count++;  if (low % 10 <=K && (low%10))    count++;   return count;} // Driver Codeint main(){    int low = 3, high = 35, k = 3;    cout << countLastDigitK(low, high, k);    return 0;}

Java

 // Efficient Java program to count numbers// with last digit as k in given range.import java.util.*;import java.lang.*; public class GfG{    // Returns count of numbers with    // k as last digit.    public static int counLastDigitK(int low,                             int high, int k)    {        int mlow = 10 * (int)                      Math.ceil(low/10.0);        int mhigh = 10 * (int)                      Math.floor(high/10.0);        int count = (mhigh - mlow)/10;        if (high % 10 >= k)            count++;        if (low % 10 <= k && (low%10) > 0)            count++;        return count;    }         // driver function    public static void main(String argc[])    {        int low = 3, high = 35, k = 3;        System.out.println(counLastDigitK(low, high, k));    }} // This code is contributed by Sagar Shukla

Python3

 import math# Efficient python program to count numbers# with last digit as k in given range. # Returns count of numbers with k as last# digit.def counLastDigitK(low, high, k):    mlow = 10 * math.ceil(low/10.0)    mhigh = 10 * int(high/10.0)         count = (mhigh - mlow)/10    if (high % 10 >= k):        count += 1    if (low % 10 <= k and \        (low%10) > 0):        count += 1    return int(count)  # Driver Codelow = 3high = 35k = 3print(counLastDigitK(low, high, k)) # This code is contributed by# Smitha Dinesh Semwal

C#

 // Efficient Java program to count numbers// with last digit as k in given range.using System; public class GfG{    // Returns count of numbers with    // k as last digit.    public static int counLastDigitK(int low,                                int high, int k)    {        int mlow = 10 * Convert.ToInt32(                  Math.Ceiling(low/10.0));        int mhigh = 10 * Convert.ToInt32(                  Math.Floor(high/10.0));        int count = (mhigh - mlow) / 10;        if (high % 10 >= k)            count++;        if (low % 10 <= k && (low%10) > 0)            count++;        return count;    }         // Driver function    public static void Main()    {        int low = 3, high = 35, k = 3;        Console.WriteLine(          counLastDigitK(low, high, k));    }} // This code is contributed by vt_m

Javascript


Output
4

Time Complexity : O(1)

My Personal Notes arrow_drop_up