Count of numbers in Array ending with digits of number N - GeeksforGeeks

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: 1 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++
Java
Python3
C#
Javascript
// C++ program to find the count// of numbers in Array ending// with digits of number N #include <bits/stdc++.h>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 presentvoid 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 Nint 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 countvoid 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 codeint main(){    int N = 1731;     // Preprocessing    digitsPresent(N);     int K = 5;    int arr[] = { 57, 6786,                  1111, 3, 9812 };     findCount(N, K, arr);    return 0;}
// Java program to find the count// of numbers in Array ending// with digits of number Nclass 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 presentpublic 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 Npublic 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 countpublic 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 codepublic 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 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 presentdef 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 Ndef 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 countdef findCount(N, K, arr):     count = 0;    for i in range(K):        if checkLastDigit(arr[i]) == 1:            count += 1        else:            count                 print(count) # Driver codeN = 1731; # PreprocessingdigitsPresent(N); K = 5;arr = [ 57, 6786, 1111, 3, 9812 ]; findCount(N, K, arr); # This code is contributed by grand_master
// C# program to find the count// of numbers in Array ending// with digits of number Nusing 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 presentpublic 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 Npublic 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 countpublic 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 codestatic 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
<script> // Javascript 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)let digit = new Uint8Array(10); // Function to initialize true// if the digit is presentfunction digitsPresent(n){    // Variable to store the last digit    let 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 = Math.floor(n/10);    }} // Function to check if the// numbers in the array// end with the digits of// the number Nfunction checkLastDigit(num){     // Variable to store the count    let count = 0;     // Variable to store the last digit    let 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 countfunction findCount(N, K, arr){    let count = 0;     for (let i = 0; i < K; i++) {         count = checkLastDigit(arr[i]) == 1                    ? count + 1                    : count;    }    document.write(count + "<br>");} // Driver code     let N = 1731;     // Preprocessing    digitsPresent(N);     let K = 5;    let arr = [ 57, 6786,                1111, 3, 9812 ];     findCount(N, K, arr); //This code is contributed by Mayank Tyagi</script>
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.
grand_master
sayantanpal1
piyush3010
mayanktyagi1709
number-digits
Numbers
Arrays
Mathematical
School Programming
Arrays
Mathematical
Numbers
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Window Sliding Technique
Trapping Rain Water
Reversal algorithm for array rotation
Program to find sum of elements in a given array
Building Heap from Array
Program for Fibonacci numbers
Write a program to print all permutations of a given string
C++ Data Types
Set in C++ Standard Template Library (STL)
Coin Change | DP-7