标签:read 多少 aoe ane 交通 杭州 ble mit line
#include<iostream> #include<cstdio> #include<cstring> #include<cmath> #include<bitset> #define ls k<<1 #define rs k<<1|1 using namespace std; const int MAXN=1000001; inline void read(int &n) { char c=‘+‘;int x=0;bool flag=0; while(c<‘0‘||c>‘9‘){c=getchar();if(c==‘-‘)flag=1;} while(c>=‘0‘&&c<=‘9‘){x=x*10+(c-48);c=getchar();} n=flag==1?-x:x; } int dp[21][3]; int n,m; int a[21]; int pos; int dfs(int pos,int pre,int how,bool lim) { if(pos==-1) return 1; if(!lim&&dp[pos][how]!=-1) return dp[pos][how]; int up=lim?a[pos]:9; int tmp=0; for(int i=0;i<=up;i++) { if(i==4)continue; if(pre==6&&i==2)continue; tmp+=dfs(pos-1,i,i==6,lim&&i==a[pos]); } if(!lim)dp[pos][how]=tmp; return tmp; } int work(int num) { pos=0; while(num) { a[pos++]=num%10; num=num/10; } return dfs(pos-1,-1,0,1); } int main() { memset(dp,-1,sizeof(dp)); while(scanf("%d%d",&n,&m)) { if(n==0&&m==0)break; printf("%d\n",work(m)-work(n-1)); } return 0; }
标签:read 多少 aoe ane 交通 杭州 ble mit line
原文地址:http://www.cnblogs.com/zwfymqz/p/7308830.html