不要62
阿新 • • 發佈:2017-12-24
+= mark int size ret markdown class log ++
http://acm.hdu.edu.cn/showproblem.php?pid=2089
#include<iostream> #include<cstring> #include<cstdio> using namespace std; typedef long long ll; int a[20]; int dp[20][2]; int dfs(int pos,int pre,int sta,bool limit){ if(pos==-1)return 1; if(!limit&&dp[pos][sta]!=-1)return dp[pos][sta]; int up=limit?a[pos]:9; int tmp=0; for(int i=0;i<=up;++i){ if(pre==6&&i==2)continue; if(i==4)continue; tmp+=dfs(pos-1,i,i==6,limit&&i==a[pos]); } if(!limit)dp[pos][sta]=tmp; return tmp; } int solve(int x){ int pos=0; while(x) a[pos++]=x%10,x/=10; return dfs(pos-1,-1,0,true); } int main(){ int le,ri; memset(dp,-1,sizeof(dp)); while(~scanf("%d%d",&le,&ri)&&le+ri) printf("%d\n",solve(ri)-solve(le-1)); return 0; }
不要62