$3$-Like Numbers

For a positive integer $n$, define $f(n)$ to be the number of non-empty substrings of $n$ that are divisible by $3$. For example, the string “2573” has $10$ non-empty substrings, three of which represent numbers that are divisible by $3$, namely $57$, $573$ and $3$. So $f(2573) = 3$.

If $f(n)$ is divisible by $3$ then we say that $n$ is $3$-like.

Define $F(d)$ to be how many $d$ digit numbers are $3$-like. For example, $F(2) = 30$ and $F(6) = 290898$.

Find $F(10^5)$. Give your answer modulo $1\,000\,000\,007$.

This problem involves sprawling steps across combinatorics, number theory, dynamic programming, and modular arithmetic. The first observation is that a three-digit number abc divisible by 3 entails a+b+c (mod 3) =0. Therefore, one could keep track of the count of two-digit numbers ac with a+c = i (mod 3) for i=0,1,2 to address larger numbers.

You would need to build a dynamic programming table dp[n][i][j][k], where n ranges from 1 to 10^5, i ranges from 0 to 3 (record f(n) mod 3), j ranges from 0 to 9 (for the tens digit), and k ranges from 0 to 2 (recording a+c mod 3). You should initialize dp[0][0][0][0]=1; and then, in a nested loop, traverse variables n, i, j, k, a (where a ranges from 0 to 9 for the units digit). You then perform the following update: Add dp[n-1][i][j][k] * 10 to dp[n][(i+dp[n-1][j][k+a mod 3]) mod 3][a][k+a mod 3], and ensure that it is also mod (10^9 + 7) to avoid overflow issues.

The answer to this problem would be: dp[10^5][0][0][0] + dp[10^5][0][1][0] + dp[10^5][0][2][0] + dp[10^5][0][3][0] + dp[10^5][0][4][0] + dp[10^5][0][5][0] + dp[10^5][0][6][0] + dp[10^5][0][7][0] + dp[10^5][0][8][0] + dp[10^5][0][9][0], each entry also being processed mod (10^9 + 7).

I do not have the computational facilities to carry out this dynamic programming process for n=10^5. Given a sufficient programming environment, this outlined algorithm would certainly provide the desired result.

More Answers:
Circular Logic II
Factors of Two in Binomial Coefficients
Total Inversion Count of Divided Sequences

Error 403 The request cannot be completed because you have exceeded your quota. : quotaExceeded

Share:

Recent Posts