zxj跑圈
Posted szmssf
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了zxj跑圈相关的知识,希望对你有一定的参考价值。
1 #include<iostream> 2 #include<cstring> 3 #include<cstdio> 4 using namespace std; 5 int n,m,f[55][55],num[55],len; 6 int dp(int pos,int state,int lead,int limit) 7 { 8 if(pos==0)return 1; 9 if(!lead&&!limit&&(~f[pos][state]))return f[pos][state]; 10 int up=limit?num[pos]:9,ans=0; 11 for(int i=0;i<=up;i++) 12 { 13 if(i==4||(state==6&&i==2))continue; 14 ans+=dp(pos-1,i,lead&&i==0,limit&&i==num[pos]); 15 } 16 if(!lead&&!limit)f[pos][state]=ans; 17 return ans; 18 } 19 int solve(int x) 20 { 21 memset(f,-1,sizeof(f));len=0; 22 while(x){num[++len]=x%10;x/=10;} 23 return dp(len,0,1,1); 24 } 25 int main() 26 { 27 while(cin>>n>>m) 28 { 29 if(!n&&!m)break; 30 printf("%d\n",solve(m)-solve(n-1)); 31 } 32 return 0; 33 }
以上是关于zxj跑圈的主要内容,如果未能解决你的问题,请参考以下文章