Count N-digits numbers made up of even and prime digits at odd and even positions respectively - GeeksforGeeks

13 Sep, 2021
Given a positive integer N, the task is to find the number of integers of N digits having even digits at odd indices and prime digits at even indices.
Examples:
Input: N = 2Output: 20Explanation:Following are the possible number of 2-digits satisfying the given criteria {20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 50, 52, 54, 56, 58, 70, 72, 74, 76, 78}. Therefore, the count of such number is 20.
Input: N = 5Output: 1600
Approach: The given problem can be solved using the concept of Permutations and Combinations by observing the fact that there are only 4 choices for the even positions as [2, 3, 5, 7] and 5 choices for the odd positions as [0, 2, 4, 6, 8]. Therefore, the count of N-digits numbers satisfying the given criteria is given by:
total count = 4P5Q, where P and Q is the number of even and odd positions respectively.
Below is the implementation of the above approach:
C++
Java
Python3
C#
Javascript
// C++ program for the above approache#include<bits/stdc++.h>using namespace std; int m = 1000000007; // Function to find the value of x ^ yint power(int x, int y){         // Stores the value of x ^ y    int res = 1;     // Iterate until y is positive    while (y > 0)    {                 // If y is odd        if ((y & 1) != 0)            res = (res * x) % m;         // Divide y by 2        y = y >> 1;         x = (x * x) % m;    }         // Return the value of x ^ y    return res;} // Function to find the number of N-digit// integers satisfying the given criteriaint countNDigitNumber(int N){         // Count of even positions    int ne = N / 2 + N % 2;     // Count of odd positions    int no = floor(N / 2);     // Return the resultant count    return power(4, ne) * power(5, no);} // Driver Codeint main(){    int N = 5;    cout << countNDigitNumber(N) % m << endl;} // This code is contributed by SURENDRA_GANGWAR
// Java program for the above approachimport java.io.*;class GFG { static int m = 1000000007; // Function to find the value of x ^ ystatic int power(int x, int y){         // Stores the value of x ^ y    int res = 1;     // Iterate until y is positive    while (y > 0)    {                 // If y is odd        if ((y & 1) != 0)            res = (res * x) % m;         // Divide y by 2        y = y >> 1;         x = (x * x) % m;    }         // Return the value of x ^ y    return res;} // Function to find the number of N-digit// integers satisfying the given criteriastatic int countNDigitNumber(int N){         // Count of even positions    int ne = N / 2 + N % 2;     // Count of odd positions    int no = (int)Math.floor(N / 2);     // Return the resultant count    return power(4, ne) * power(5, no);} // Driver Codepublic static void main(String[] args){    int N = 5;    System.out.println(countNDigitNumber(N) % m);}} // This code is contributed by sanjoy_62.
# Python program for the above approach import mathm = 10**9 + 7 # Function to find the value of x ^ ydef power(x, y):       # Stores the value of x ^ y    res = 1         # Iterate until y is positive    while y > 0:               # If y is odd        if (y & 1) != 0:            res = (res * x) % m                     # Divide y by 2        y = y >> 1                 x = (x * x) % m             # Return the value of x ^ y    return res # Function to find the number of N-digit# integers satisfying the given criteriadef countNDigitNumber(n: int) -> None:         # Count of even positions    ne = N // 2 + N % 2         # Count of odd positions    no = N // 2         # Return the resultant count    return power(4, ne) * power(5, no) # Driver Codeif __name__ == '__main__':           N = 5    print(countNDigitNumber(N) % m)
// C# program for the above approachusing System; class GFG{ static int m = 1000000007; // Function to find the value of x ^ ystatic int power(int x, int y){         // Stores the value of x ^ y    int res = 1;     // Iterate until y is positive    while (y > 0)    {                 // If y is odd        if ((y & 1) != 0)            res = (res * x) % m;         // Divide y by 2        y = y >> 1;         x = (x * x) % m;    }         // Return the value of x ^ y    return res;} // Function to find the number of N-digit// integers satisfying the given criteriastatic int countNDigitNumber(int N){         // Count of even positions    int ne = N / 2 + N % 2;     // Count of odd positions    int no = (int)Math.Floor((double)N / 2);     // Return the resultant count    return power(4, ne) * power(5, no);}  // Driver Codepublic static void Main(){    int N = 5;    Console.Write(countNDigitNumber(N) % m);}} // This code is contributed by splevel62.
   <script>         // JavaScript program for the above approache          var m = 10 ** 9 + 7         // Function to find the value of x ^ y        function power(x, y) {             // Stores the value of x ^ y            var res = 1             // Iterate until y is positive            while (y > 0) {                 // If y is odd                if ((y & 1) != 0)                    res = (res * x) % m                 // Divide y by 2                y = y >> 1                 x = (x * x) % m            }            // Return the value of x ^ y            return res        }        // Function to find the number of N-digit        // integers satisfying the given criteria        function countNDigitNumber(N) {             // Count of even positions            var ne = Math.floor(N / 2) + N % 2             // Count of odd positions            var no = Math.floor(N / 2)             // Return the resultant count            return power(4, ne) * power(5, no)        }        // Driver Code          let N = 5        document.write(countNDigitNumber(N) % m);  // This code is contributed by Potta Lokesh    </script>
1600
 
Time Complexity: O(log N)Auxiliary Space: O(1)
lokeshpotta20
SURENDRA_GANGWAR
sanjoy_62
splevel62
gabaa406
number-digits
permutation
Permutation and Combination
Prime Number
Mathematical
Mathematical
Prime Number
permutation
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Algorithm to solve Rubik's Cube
Program to print prime numbers from 1 to N.
Fizz Buzz Implementation
Program to multiply two matrices
Modular multiplicative inverse
Check if a number is Palindrome
Find first and last digits of a number
Count ways to reach the n'th stair
Program to convert a given number to words
Find Union and Intersection of two unsorted arrays