Related Articles

# Count of numbers in Array ending with digits of number N

• Last Updated : 10 May, 2021

Given a number N and an array arr[] consisting of K numbers, the task is to find the count of numbers in the array which ends with any of the digit present in the number N.

Examples:

Input: N = 1731 arr[] = {57, 6786}
Output:
Explanation:
For 57, the last digit is 7 and since 7 is present is N, so the count is 1.
For 6786, the last digit is 6 and since 6 is not present in N, the count remains 1.
Input: N = 1324, arr[] = {23, 25, 12, 121}
Output: 3

Naive Approach: The naive approach for this problem is that for every number in the array arr[], check if its last digit is equal to any of the digits in N. Increment the count for each of such number and print it at the end.
Time Complexity: O(N * K), where N is the number and K is the number of elements in the array arr[].
Efficient Approach: The efficient approach for this problem is to perform a preprocessing.

• Initially, create an array A[] of size 10.
• This array acts as a hash which stores all the digits occurred in the number N.
• After this, for every number in the array arr[], extract the last digit and check if this last digit has occurred or not in the array.
• Increment the count for each of such number and print it at the end.

Below is the implementation of the above approach:

## C++

 `// C++ program to find the count``// of numbers in Array ending``// with digits of number N` `#include ``using` `namespace` `std;` `// Array to keep the``// track of digits occurred``// Initially all are 0(false)``int` `digit[10] = { 0 };` `// Function to initialize true``// if the digit is present``void` `digitsPresent(``int` `n)``{``    ``// Variable to store the last digit``    ``int` `lastDigit;` `    ``// Loop to iterate through every``    ``// digit of the number N``    ``while` `(n != 0) {``        ``lastDigit = n % 10;` `        ``// Updating the array according``        ``// to the presence of the``        ``// digit in n at the array index``        ``digit[lastDigit] = ``true``;``        ``n /= 10;``    ``}``}` `// Function to check if the``// numbers in the array``// end with the digits of``// the number N``int` `checkLastDigit(``int` `num)``{` `    ``// Variable to store the count``    ``int` `count = 0;` `    ``// Variable to store the last digit``    ``int` `lastDigit;``    ``lastDigit = num % 10;` `    ``// Checking the presence of``    ``// the last digit in N``    ``if` `(digit[lastDigit] == ``true``)``        ``count++;` `    ``return` `count;``}` `// Function to find``// the required count``void` `findCount(``int` `N, ``int` `K, ``int` `arr[])``{` `    ``int` `count = 0;` `    ``for` `(``int` `i = 0; i < K; i++) {` `        ``count = checkLastDigit(arr[i]) == 1``                    ``? count + 1``                    ``: count;``    ``}``    ``cout << count << endl;``}` `// Driver code``int` `main()``{``    ``int` `N = 1731;` `    ``// Preprocessing``    ``digitsPresent(N);` `    ``int` `K = 5;``    ``int` `arr[] = { 57, 6786,``                  ``1111, 3, 9812 };` `    ``findCount(N, K, arr);``    ``return` `0;``}`

## Java

 `// Java program to find the count``// of numbers in Array ending``// with digits of number N``class` `GFG{` `// Array to keep the``// track of digits occurred``// Initially all are 0(false)``public` `static` `int``[] digit = ``new` `int``[``10``];` `// Function to initialize 1(true)``// if the digit is present``public` `static` `void` `digitsPresent(``int` `n)``{``    ` `    ``// Variable to store the last digit``    ``int` `lastDigit;` `    ``// Loop to iterate through every``    ``// digit of the number N``    ``while` `(n != ``0``)``    ``{``        ``lastDigit = n % ``10``;` `        ``// Updating the array according``        ``// to the presence of the``        ``// digit in n at the array index``        ``digit[lastDigit] = ``1``;``        ``n /= ``10``;``    ``}``}` `// Function to check if the``// numbers in the array``// end with the digits of``// the number N``public` `static` `int` `checkLastDigit(``int` `num)``{` `    ``// Variable to store the count``    ``int` `count = ``0``;` `    ``// Variable to store the last digit``    ``int` `lastDigit;``    ``lastDigit = num % ``10``;` `    ``// Checking the presence of``    ``// the last digit in N``    ``if` `(digit[lastDigit] == ``1``)``        ``count++;` `    ``return` `count;``}` `// Function to find``// the required count``public` `static` `void` `findCount(``int` `N, ``int` `K,``                             ``int` `arr[])``{``    ``int` `count = ``0``;` `    ``for``(``int` `i = ``0``; i < K; i++)``    ``{``       ``count = checkLastDigit(arr[i]) == ``1` `?``               ``count + ``1` `: count;``    ``}``    ``System.out.println(count);``}` `// Driver code``public` `static` `void` `main(String[] args)``{``    ``int` `N = ``1731``;` `    ``// Preprocessing``    ``digitsPresent(N);` `    ``int` `K = ``5``;``    ``int` `arr[] = { ``57``, ``6786``, ``1111``, ``3``, ``9812` `};` `    ``findCount(N, K, arr);``}``}` `// This code is contributed by Sayantan Pal`

## Python3

 `# Python3 program to find the count``# of numbers in Array ending``# with digits of number N` `# Array to keep the``# track of digits occurred``# Initially all are 0(false)``digit ``=` `[``0``] ``*` `10` `# Function to initialize true``# if the digit is present``def` `digitsPresent(n):``    ` `    ``# Variable to store the last digit``    ``lastDigit ``=` `0``;` `    ``# Loop to iterate through every``    ``# digit of the number N``    ``while` `(n !``=` `0``):``        ``lastDigit ``=` `n ``%` `10``;``        ` `        ``# Updating the array according``        ``# to the presence of the``        ``# digit in n at the array index``        ``digit[``int``(lastDigit)] ``=` `1``;``        ``n ``/``=` `10``;` `# Function to check if the numbers``# in the array end with the digits``# of the number N``def` `checkLastDigit(num):` `    ``# Variable to store the count``    ``count ``=` `0``;` `    ``# Variable to store the last digit``    ``lastDigit ``=` `0``;``    ``lastDigit ``=` `num ``%` `10``;` `    ``# Checking the presence of``    ``# the last digit in N``    ``if` `(digit[``int``(lastDigit)] ``=``=` `1``):``        ``count ``+``=` `1` `    ``return` `count;` `# Function to find the required count``def` `findCount(N, K, arr):` `    ``count ``=` `0``;``    ``for` `i ``in` `range``(K):``        ``if` `checkLastDigit(arr[i]) ``=``=` `1``:``            ``count ``+``=` `1``        ``else``:``            ``count``            ` `    ``print``(count)` `# Driver code``N ``=` `1731``;` `# Preprocessing``digitsPresent(N);` `K ``=` `5``;``arr ``=` `[ ``57``, ``6786``, ``1111``, ``3``, ``9812` `];` `findCount(N, K, arr);` `# This code is contributed by grand_master`

## C#

 `// C# program to find the count``// of numbers in Array ending``// with digits of number N``using` `System;` `class` `GFG{` `// Array to keep the track of digits occurred``// Initially all are 0(false)``public` `static` `int` `[]digit = ``new` `int``[10];` `// Function to initialize 1(true)``// if the digit is present``public` `static` `void` `digitsPresent(``int` `n)``{` `    ``// Variable to store the last digit``    ``int` `lastDigit;` `    ``// Loop to iterate through every``    ``// digit of the number N``    ``while` `(n != 0)``    ``{``        ``lastDigit = n % 10;` `        ``// Updating the array according to the``        ``// presence of the digit in n at the``        ``// array index``        ``digit[lastDigit] = 1;``        ``n /= 10;``    ``}``}` `// Function to check if the numbers in the``// array end with the digits of the number N``public` `static` `int` `checkLastDigit(``int` `num)``{` `    ``// Variable to store the count``    ``int` `count = 0;` `    ``// Variable to store the last digit``    ``int` `lastDigit;``    ``lastDigit = num % 10;` `    ``// Checking the presence of``    ``// the last digit in N``    ``if` `(digit[lastDigit] == 1)``        ``count++;` `    ``return` `count;``}` `// Function to find the required count``public` `static` `void` `findCount(``int` `N, ``int` `K,``                             ``int` `[]arr)``{``    ``int` `count = 0;` `    ``for``(``int` `i = 0; i < K; i++)``    ``{``        ``count = checkLastDigit(arr[i]) == 1 ?``                ``count + 1 : count;``    ``}``    ``Console.WriteLine(count);``}` `// Driver code``static` `public` `void` `Main()``{``    ``int` `N = 1731;` `    ``// Preprocessing``    ``digitsPresent(N);` `    ``int` `K = 5;``    ``int` `[]arr = { 57, 6786, 1111, 3, 9812 };` `    ``findCount(N, K, arr);``}``}` `// This code is contributed by piyush3010`

## Javascript

 ``
Output:
`3`

Time Complexity:

• O(N), where N is the given number for preprocessing.
• O(K), where K is the number of queries to find answers for the queries.

Attention reader! Don’t stop learning now. Join the First-Step-to-DSA Course for Class 9 to 12 students , specifically designed to introduce data structures and algorithms to the class 9 to 12 students

My Personal Notes arrow_drop_up