Given a string str of length N. The task is to find the number of integers obtained by replacing ‘?’ with any digit such that the formed integer gives remainder 5 when it is divided by 13.
Numbers can also begin with zero. The answer can be very large, so, output answer modulo 109 + 7.
Input: str = “?44”
Only possible number is 044
Input: str = “7?4”
Input: str = “8?3?4233?4?”
Approach: Let dp[i][j] be the number of ways to create an i-digit number consistent with the first i digits of the given pattern and congruent to j modulo 13. As our base case, dp[i]=0 for i from 1 to 12, and dp=1 (as our length-zero number has value zero and thus is zero mod 13.)
Notice that appending a digit k to the end of a number that’s j mod 13 gives a number that’s congruent to 10j+k mod 13. We use this fact to perform our transitions. For every state, dp[i][j] with i < N, iterate over the possible values of k. (If s[i]=’?’, there will be ten choices for k, and otherwise, there will only be one choice.) Then, we add dp[i][j] to dp[i+1][(10j+k)%13].
To get our final answer, we can simply print dp[N].
Below is the implementation of the above approach :
GeeksforGeeks has prepared a complete interview preparation course with premium videos, theory, practice problems, TA support and many more features. Please refer Placement 100 for details
- Minimum number of operations on a binary string such that it gives 10^A as remainder when divided by 10^B
- Find the remainder when N is divided by 4 using Bitwise AND operator
- Largest number by which given 3 numbers should be divided such that they leaves same remainder
- Largest number less than or equal to Z that leaves a remainder X when divided by Y
- Program to find remainder when large number is divided by r
- Program to find remainder when large number is divided by 11
- Number of distinct integers obtained by lcm(X, N)/X
- Find all the possible remainders when N is divided by all positive integers from 1 to N+1
- Find the remainder when First digit of a number is divided by its Last digit
- Check if a string can be converted to another string by replacing vowels and consonants
- Print all possible combinations of the string by replacing '$' with any other digit from the string
- String obtained by reversing and complementing a Binary string K times
- Check if a string can be obtained by rotating another string 2 places
- Check if a string can be obtained by rotating another string d places
- Find the resultant String after replacing X with Y and removing Z
If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to firstname.lastname@example.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.
Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.