hdoj 3555 BOMB(数位dp)
2013-06-27 17:00
344 查看
//hdoj 3555 //2013-06-27-16.53 #include <stdio.h> #include <string.h> __int64 dp[21][3], n; int len, bit[21]; //dp[i][0] 长度为i 包含49的个数 //dp[i][1] 长度为i没有49但以9开头的 //dp[i][2] 长度为i 没有49 void init() { dp[0][2] = 1; for (int i = 1; i < 20; i++) { dp[i][0] = (__int64)dp[i-1][0]*10 + dp[i-1][1]; dp[i][1] = dp[i-1][2]; dp[i][2] = (__int64) dp[i-1][2]*10 - dp[i-1][1]; } } int main() { init(); int t; scanf("%d", &t); while (t--) { scanf("%I64d", &n); len = 0; n++; while (n) { bit[++len] = n%10; n /= 10; } bit[len+1] = 0; __int64 ans = 0; bool flag = false; for (int i = len; i; i--) { ans += (__int64)dp[i-1][0]*bit[i]; if (flag) ans += dp[i-1][2]*bit[i]; if (!flag && bit[i] > 4) ans += dp[i-1][1]; if (bit[i] == 9 && bit[i+1] == 4) flag = true; } printf("%I64d\n", ans); } return 0; }
相关文章推荐
- hdoj 3555 BOMB(数位dp)
- HDOJ 题目3555 Bomb(数位DP)
- HDOJ 3555 Bomb 【数位dp】
- HDOJ 3555 Bomb 数位dp
- HDOJ 题目3555 Bomb(数位dp)
- HDOJ 题目3555 Bomb(数位dp)
- HDOJ 3555 Bomb (数位DP)
- [HDOJ3555]Bomb(数位DP)
- hdoj 3555 Bomb 【数位dp】
- HDOJ 题目3555 Bomb(数位DP)
- hdu_3555_Bomb(数位DP)
- 动态规划晋级——HDU 3555 Bomb【数位DP详解】
- 【DP】 HDOJ 3555 Bomb
- HDU 3555 Bomb (简单数位DP)
- hdu 3555 bomb 数位dp
- HDU 3555 Bomb (数位DP)
- hdu3555——Bomb(数位dp)
- hdu 3555 Bomb(数位DP,4级)
- hdu 3555 Bomb(数位dp)
- hdu-3555 Bomb(数位dp)