为了我的点歪的技能树……
所以开始补一些sb的东西……
#include<bits/stdc++.h> typedef long long ll; using namespace std; int a[20],dp[20][2]; int dfs(int x,int pre,int vis,int lim){ if(x==-1)return 1; if(!lim&&dp[x][vis]!=-1)return dp[x][vis]; int maxv=lim?a[x]:9;int tmp=0; for(int i=0;i<=maxv;i++){ if(pre==6&&i==2)continue;if(i==4)continue; tmp+=dfs(x-1,i,i==6,lim&&i==a[x]); } if(!lim)dp[x][vis]=tmp; return tmp; } int solve(int x){ int len=0; while(x){a[len++]=x%10;x/=10;} return dfs(len-1,-1,0,1); } int main(){ int l,r; while(scanf("%d%d",&l,&r)&&(l+r)){ memset(dp,-1,sizeof(dp)); printf("%d\n",solve(r)-solve(l-1)); } }
时间: 2024-09-27 01:45:02