HDU 2089 数位DP
2013-04-15 14:45
337 查看
#include <cstdio> #include <cstring> #include <algorithm> #include <iostream> using namespace std; int l, r; /* * 0 不包含62 * 1 以2开头不包含62 * 2 包含62 */ int dp[11][3], f[11]; void init() { int i, j; f[0] = 1; for(i = 0; i <= 9; i++) f[i] = f[i-1] * 10; dp[0][0] = 1; for(i = 1; i <= 9; i++) { dp[i][0] = dp[i-1][0] * 9 - dp[i-1][1]; dp[i][1] = dp[i-1][0]; // dp[i][2] = dp[i-1][1] + dp[i-1][2] * 9; } } int gao(int n) { int a[11], len = 0; while(n) {a[len++] = n%10; n/=10; } int i, j, ans = 0; a[len] = 0; bool flag = 0; for(i = len-1; i >= 0; i--) { for(j = 0; j < a[i]; j++) { if(flag || (a[i+1] == 6 && j == 2) || j == 4 ) continue; if(j == 6) ans += dp[i][0]-dp[i][1]; else ans += dp[i][0]; } if(a[i] == 4 || (a[i+1] == 6 && a[i] == 2)) flag = 1; } if(!flag) ans++; return ans; } int main() { int i, j; init(); while( cin >> l >> r) { if(!l && !r) break; cout << gao(r) - gao(l-1) << endl; } return 0; }
相关文章推荐
- hdu 2089 不要62 (数位DP)
- hdu2089——不要62(数位DP入门)
- HDU 2089 不要62(数位DP入门+模板)
- hdu 2089 不要62(数位dp)
- HDU 2089 不要62 (数位DP)
- hdu 2089 不要62 数位dp入门
- HDU 2089 不要62 数位dp入门
- HDU 2089 不要62 数位DP
- HDU 2089 (数位dp)
- HDU 2089 不要62(数位dp)
- HDU 2089 不要62 (数位DP,入门)
- HDU 2089 不要62(数位DP)
- HDU 2089 不要62(数位DP)
- HDU 2089 数位DP
- hdu 2089(初学数位DP)
- hdu 2089 不要62 --- 数位dp
- Hdu 2089 不要62(数位dp入门)
- hdu 2089 数位DP
- hdu 2089 数位dp
- HDU 2089不要62 数位dp