# Count N-digit numbers possible consisting of digits X and Y

Given three integers **N**, **X**, and **Y**, the task is to find the count of **N**-digit numbers that can be formed using digits **0** to **9** satisfying the following conditions:

- Digits
**X**and**Y**must be present in them. - The number may contain leading
**0**s.

**Note: **Since the answer can be very large, print the answer modulo **10 ^{9 }+ 7**.

**Examples:**

Input:N = 2, X = 1, Y = 2Output:2Explanation:There are only two possible numbers 12 and 21.

Input:N = 10, X = 3, Y = 4100172994Output:

**Approach: **The idea is to use permutation and combination techniques to solve the problem. Follow the steps below to solve the problem:

- Total
**N-**digit numbers that possible using digits**{0 – 9}**is**10**^{N} - Total
**N-**digit numbers that can be formed using digits**{0 – 9} – { X }**is**9**^{N} - Total
**N**-digit numbers that can be formed using digit**{0 – 9} – {X, Y}**is**8**^{N} - Total
**N**-digit numbers that contain digit**X**and**Y**is the difference between all possible numbers and the numbers which do not contain digit**X**or**Y**followed by the summation of the numbers which contain all digits except**X**and**Y**. Hence, the answer is**10**^{N }– 2 * 9^{N}+ 8^{N}.

Below is the implementation of the above approach:

## C++

`// C++ Program for the above approach` `#include <bits/stdc++.h>` `using` `namespace` `std;` `const` `int` `mod = 1e9 + 7;` `// Function for calculate` `// (x ^ y) % mod in O(log y)` `long` `long` `power(` `int` `x, ` `int` `y)` `{` ` ` `// Base Condition` ` ` `if` `(y == 0)` ` ` `return` `1;` ` ` `// Transition state of` ` ` `// power Function` ` ` `long` `long` `int` `p` ` ` `= power(x, y / 2) % mod;` ` ` `p = (p * p) % mod;` ` ` `if` `(y & 1) {` ` ` `p = (x * p) % mod;` ` ` `}` ` ` `return` `p;` `}` `// Function for counting total numbers` `// that can be formed such that digits` `// X, Y are present in each number` `int` `TotalNumber(` `int` `N)` `{` ` ` `// Calculate the given expression` ` ` `int` `ans = (power(10, N)` ` ` `- 2 * power(9, N)` ` ` `+ power(8, N) + 2 * mod)` ` ` `% mod;` ` ` `// Return the final answer` ` ` `return` `ans;` `}` `// Driver Code` `int` `main()` `{` ` ` `int` `N = 10, X = 3, Y = 4;` ` ` `cout << TotalNumber(N) << endl;` ` ` `return` `0;` `}` |

## Java

`// Java program for the above approach` `import` `java.util.*;` `class` `GFG{` `static` `int` `mod = (` `int` `)(1e9 + ` `7` `);` `// Function for calculate` `// (x ^ y) % mod in O(log y)` `static` `long` `power(` `int` `x, ` `int` `y)` `{` ` ` `// Base Condition` ` ` `if` `(y == ` `0` `)` ` ` `return` `1` `;` ` ` `// Transition state of` ` ` `// power Function` ` ` `int` `p = (` `int` `)(power(x, y / ` `2` `) % mod);` ` ` `p = (p * p) % mod;` ` ` `if` `(y % ` `2` `== ` `1` `)` ` ` `{` ` ` `p = (x * p) % mod;` ` ` `}` ` ` `return` `p;` `}` `// Function for counting total numbers` `// that can be formed such that digits` `// X, Y are present in each number` `static` `int` `TotalNumber(` `int` `N)` `{` ` ` ` ` `// Calculate the given expression` ` ` `int` `ans = (` `int` `)((power(` `10` `, N) - ` `2` `*` ` ` `power(` `9` `, N) +` ` ` `power(` `8` `, N) +` ` ` `2` `* mod) % mod);` ` ` `// Return the final answer` ` ` `return` `ans;` `}` `// Driver Code` `public` `static` `void` `main(String[] args)` `{` ` ` `int` `N = ` `10` `, X = ` `3` `, Y = ` `4` `;` ` ` ` ` `System.out.print(TotalNumber(N) + ` `"\n"` `);` `}` `}` `// This code is contributed by Amit Katiyar` |

## Python3

`# Python3 program for the above approach` `mod ` `=` `1e9` `+` `7` `# Function for calculate` `# (x ^ y) % mod in O(log y)` `def` `power(x, y):` ` ` `# Base Condition` ` ` `if` `(y ` `=` `=` `0` `):` ` ` `return` `1` ` ` `# Transition state of` ` ` `# power Function` ` ` `p ` `=` `power(x, y ` `/` `/` `2` `) ` `%` `mod` ` ` `p ` `=` `(p ` `*` `p) ` `%` `mod` ` ` `if` `(y & ` `1` `):` ` ` `p ` `=` `(x ` `*` `p) ` `%` `mod` ` ` `return` `p` `# Function for counting total numbers` `# that can be formed such that digits` `# X, Y are present in each number` `def` `TotalNumber(N):` ` ` `# Calculate the given expression` ` ` `ans ` `=` `(power(` `10` `, N) ` `-` `2` `*` ` ` `power(` `9` `, N) ` `+` ` ` `power(` `8` `, N) ` `+` `2` `*` `mod) ` `%` `mod` ` ` `# Return the final answer` ` ` `return` `ans` `# Driver Code` `if` `__name__ ` `=` `=` `'__main__'` `:` ` ` `N ` `=` `10` ` ` `X ` `=` `3` ` ` `Y ` `=` `4` ` ` ` ` `print` `(TotalNumber(N))` `# This code is contributed by mohit kumar 29` |

## C#

`// C# program for the above approach` `using` `System;` `class` `GFG{` `static` `int` `mod = (` `int` `)(1e9 + 7);` `// Function for calculate` `// (x ^ y) % mod in O(log y)` `static` `long` `power(` `int` `x, ` `int` `y)` `{` ` ` `// Base Condition` ` ` `if` `(y == 0)` ` ` `return` `1;` ` ` `// Transition state of` ` ` `// power Function` ` ` `int` `p = (` `int` `)(power(x,` ` ` `y / 2) % mod);` ` ` `p = (p * p) % mod;` ` ` `if` `(y % 2 == 1)` ` ` `{` ` ` `p = (x * p) % mod;` ` ` `}` ` ` `return` `p;` `}` `// Function for counting` `// total numbers that can be` `// formed such that digits` `// X, Y are present in each number` `static` `int` `TotalNumber(` `int` `N)` `{ ` ` ` `// Calculate the given expression` ` ` `int` `ans = (` `int` `)((power(10, N) - 2 *` ` ` `power(9, N) +` ` ` `power(8, N) +` ` ` `2 * mod) % mod);` ` ` `// Return the` ` ` `// readonly answer` ` ` `return` `ans;` `}` `// Driver Code` `public` `static` `void` `Main(String[] args)` `{` ` ` `int` `N = 10;` ` ` `Console.Write(TotalNumber(N) + ` `"\n"` `);` `}` `}` `// This code is contributed by 29AjayKumar` |

## Javascript

`<script>` `// Javascript Program for the above approach` `var` `mod = 1000000007;` `// Function for calculate` `// (x ^ y) % mod in O(log y)` `function` `power(x, y)` `{` ` ` `// Base Condition` ` ` `if` `(y == 0)` ` ` `return` `1;` ` ` `// Transition state of` ` ` `// power Function` ` ` `var` `p` ` ` `= power(x, y / 2) % mod;` ` ` `p = (p * p) % mod;` ` ` `if` `(y & 1) {` ` ` `p = (x * p) % mod;` ` ` `}` ` ` `return` `p;` `}` `// Function for counting total numbers` `// that can be formed such that digits` `// X, Y are present in each number` `function` `TotalNumber(N)` `{` ` ` `// Calculate the given expression` ` ` `var` `ans = (power(10, N)` ` ` `- 2 * power(9, N)` ` ` `+ power(8, N) + 2 * mod)` ` ` `% mod;` ` ` `// Return the final answer` ` ` `return` `ans;` `}` `// Driver Code` `var` `N = 10, X = 3, Y = 4;` `document.write( TotalNumber(N));` `</script>` |

**Output**

100172994

* Time Complexity: *O(

*log N)*

**Auxiliary Space:**O(1)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****.**