B-number
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 8748 Accepted Submission(s): 5196
Problem Description
A wqb-number, or B-number for short, is a non-negative integer whose decimal form
contains the sub- string “13” and can be divided by 13. For example, 130 and 2613
are wqb-numbers, but 143 and 2639 are not. Your task is to calculate how many
wqb-numbers from 1 to n for a given integer n.
Input
Process till EOF. In each line, there is one positive integer n(1 <= n <= 1000000000).
Output
Print each answer in a single line.
Sample Input
13
100
200
1000
Sample Output
1
1
2
2
题意: 求[1, n]中包含字段“13”且被13整除的数的个数
数位DP, 用pre代表前置状态, pre为0时表示前面没有“13”且前一数位不为1, pre为1时表示前面没有“13”且
前一位为1, pre为2时表示前面已有“13”。
若当前pre为2,则后续pre均为2。
若当前pre为1且当前数位为3, 则下一数位pre为2。
若当前pre为0或1且当前数位为1, 则下一数位pre为1
其余条件pre为0。
Code:
1 |
|