题意:
给出一个数N,求从1到N中含49的数的个数.
思路:
按位DP.
dp[i][0] i bits num including 49
dp[i][1] i bits num excluding 49 but heading with 9
dp[i][2] i bits num excluding 49
转移方程
dp[i][0] = dp[i-1][0]*10 + dp[i-1][1];
dp[i][1] = dp[i-1][2];
dp[i][2] = dp[i-1][2]*10 - dp[i-1][1];
关于00049,0049,049重复的问题:
因为是预处理,所以不代表是合法的数字,只是代表数字序列.
计算结果时,最高位也是从0开始的.只有计算最高位的时候是将不足len位的数全部算进去,循环到len位之下的时候,看似i在减小,讨论......
阅读全文