HDU 3555 数位DP
2014-08-19 11:02
176 查看
#include <cstdlib> #include <cctype> #include <cstring> #include <cstdio> #include <cmath> #include <algorithm> #include <vector> #include <string> #include <iostream> #include <sstream> #include <map> #include <set> #include <queue> #include <stack> #include <fstream> #include <numeric> #include <iomanip> #include <bitset> #include <list> #include <stdexcept> #include <functional> #include <utility> #include <ctime> #include <cassert> #include <complex> using namespace std; typedef long long ll; typedef long double ld; const int int_max = 0x07777777; const int int_min = 0x80000000; const int inf=0x20202020; const ll mod=1000000007; const double eps=1e-9; const double pi=3.1415926535897932384626; const int DX[]={1,0,-1,0},DY[]={0,1,0,-1}; ll powmod(ll a,ll b) {ll res=1;a%=mod;for(;b;b>>=1){if(b&1)res=res*a%mod;a=a*a%mod;}return res;} ll powmod(ll a,ll b,ll mod) {ll res=1;a%=mod;for(;b;b>>=1){if(b&1)res=res*a%mod;a=a*a%mod;}return res;} ll gcd(ll a,ll b) { return b?gcd(b,a%b):a;} bool cmp (const void *a , const void *b ) { return *(int *)a < *(int *)b; } ll dp[30][3]; ll n,a[70]; ll solve (int len){ ll sum = 0,last = 0; int flag = 0; for(int i = len; i >= 1; i--){ sum += dp[i-1][1]*a[i]; if(flag) sum += dp[i-1][0]*a[i]; if(!flag && a[i]>4) sum += dp[i-1][2]; if(last==4 && a[i]==9) flag = 1; last = a[i]; } return sum; } int main() { for(int i = 0; i <30; i++){ for(int j = 0; j < 3; j++) dp[i][j] = 0; } dp[0][0] = 1; for(int i = 1; i < 30; i++){ dp[i][0] = dp[i-1][0]*10 - dp[i-1][2]; dp[i][1] = dp[i-1][1]*10 + dp[i-1][2]; dp[i][2] = dp[i-1][0]; } int T; while(scanf("%d", &T)!=EOF){ while(T--){ scanf("%I64d", &n); n++; for(int i = 0; i < 30; i++) a[i] = 0; int len = 0; while(n){ a[++len] = n%10; n /= 10; } ll ret = solve(len); printf("%I64d\n",ret); } } }
相关文章推荐
- hdu 3555 数位DP
- hdu 3555 - Bomb [数位dp]
- [HDU 3555]Bomb[数位DP]
- hdu 3555 数位dp
- hdu 3555 Bomb 数位DP
- hdu 3709+hdu 3555(数位dp)
- HDU 3555 Bomb 数位dp
- HDU 3555 Bomb 数位DP
- 几个基础数位DP(hdu 2089,hdu 3555,uestc 1307 windy 数)
- hdu 3555 数位DP
- hdu 3555 数位dp
- HDU-3555 Bomb 数位DP
- HDU 3555 Bomb(数位DP)
- hdu 3555 Bomb(数位DP,4级)
- HDU 3555 数位DP
- HDU 3555 \数位DP
- HDU 3555 Bomb (数位DP)
- hdu 3555 Bomb 数位dp
- hdu 3555 Bomb(数位DP,4级)
- HDU-3555 Bomb 数位DP