hdu 3555 数位dp
2013-10-27 12:06
399 查看
#include <iostream> #include <cstdio> #include <cstring> using namespace std; __int64 dp[20][3]; int T; __int64 n; void init() { memset(dp, 0, sizeof(dp)); dp[0][0] = 1; for(int i = 1; i < 20; i++) { dp[i][0] = dp[i-1][0]*10 - dp[i-1][1]; dp[i][1] = dp[i-1][0]; dp[i][2] = dp[i-1][2]*10 + dp[i-1][1]; } } __int64 solve(__int64 n) { int a[30]; int flag = 0; __int64 ans = 0; int len = 0; while(n) { a[++len] = n%10; n /= 10; } a[len+1] = 0; for(int i = len; i >= 1; i--) { ans += dp[i-1][2]*a[i]; if(flag) ans += dp[i-1][0]*a[i]; if(!flag && a[i] > 4) ans += dp[i-1][1]; if(a[i+1] == 4 && a[i] == 9) flag = 1; } return ans; } int main() { scanf("%d", &T); init(); while(T--) { scanf("%I64d", &n); printf("%I64d\n", solve(n+1)); } return 0; }
相关文章推荐
- hdu 3555 bomb(数位dp)
- hdu 3555(数位dp入门)
- HDU 3555 D - Bomb(数位dp)(模板)
- hdu 3555 Bomb 【数位DP】
- 【数位DP】 HDU 3555 Bomb
- HDU 3555 Bomb(数位DP)
- hdu 3555 Bomb 数位DP
- hdu 3555 Bomb(数位dp)
- hdu 2089 & hdu 3555 (数位DP)
- HDU 3555 HDU 2089(数位DP)
- HDU 3555 数位DP
- 数位DP——Bomb ( HDU 3555 )
- hdu 3709+hdu 3555(数位dp)
- HDU-3555-Bomb(数位DP)
- HDU3555——Bomb(数位DP)
- 【HDU 3555】Bomb 数位dp模板
- HDU 3555 Bomb(数位dp)
- HDU 3555 Bomb (数位DP)
- HDU3555——Bomb(数位DP)
- HDU - 3555 bomb(数位DP) HQG_AC的博客