hdu 3652 B-number 数位DP
2013-09-05 21:46
309 查看
思路:数位DP
View Code
#include<cstdio> #include<cstring> int bit[10],dp[10][10][13][2]; int dfs(int pos,int pre,int mod,bool h,bool inf) { if(pos==-1) return h&&!mod; if(!inf&&dp[pos][pre][mod][h]!=-1) return dp[pos][pre][mod][h]; int i,ans=0; int e=inf?bit[pos]:9; for(i=0;i<=e;i++){ if(pre==1&&i==3) ans+=dfs(pos-1,i,(mod*10+i)%13,1,inf&&(i==bit[pos])); else ans+=dfs(pos-1,i,(mod*10+i)%13,h,inf&&(i==bit[pos])); } if(!inf) dp[pos][pre][mod][h]=ans; return ans; } int cal(int n) { int pos=0; while(n){ bit[pos++]=n%10; n/=10; } return dfs(pos-1,0,0,0,1); } int main() { int n,ans,m,k; memset(dp,-1,sizeof(dp)); while(scanf("%d",&n)!=EOF){ printf("%d\n",cal(n)); } }
View Code
相关文章推荐
- hdu 3652 B-number 数位dp
- 【HDU】3652 B-number 数位DP
- HDU 3652 B-number(数位DP)
- HDU 3652 B-number(数位DP)
- HDU 2089 不要62 & HDU 3652 B-number(初级数位DP)
- HDU-3652 B-number (数位dp)
- 【HDU 3652】 B-number (数位DP)
- hdu 3652 B-number 数位dp
- HDU - 3652 B-number (数位dp)
- HDU-3652 B-number (数位DP)
- hdu 3652 B-number (数位DP)
- HDU 3652 B-number (数位DP)
- HDU 3652 B-number (数位DP)
- [数位dp] hdu 3652 B-number
- HDU 3652 B-number (数位DP)
- HDU 3652 B-number 数位dp
- 【数位DP】HDU 3652 B-number
- 【数位dp】HDU 3652 B-number
- HDU - 3652 : B-number (数位dp)
- hdu 3652 B-number(数位dp)