Run ID 作者 问题 语言 测评结果 Time Memory 代码长度 提交时间
97464 揭伟琦 不吉利的数 C++ Output Limit Exceeded 32 MS 264 KB 736 2024-11-15 23:03:01

Tests(0/10):


Code:

#include<bits/stdc++.h> using namespace std; int l,r; int a[15],f[15][2]; int dfs(int num,int pre,int k,bool limit) { if(num==0)return 1; if(!limit&&f[num][k]!=-1)return f[num][k]; int up,sum=0; if(!limit)up=9; else up=a[num]; for(int i=0;i<=up;i++) { if(i==4)continue; if(i==2&&pre==6)continue; sum+=dfs(num-1,i,i==6,limit&&i==a[num]); } if(!limit)f[num][k]=sum; return sum; } int slove(int x) { int num=0; memset(a,0,sizeof(a)); while(x!=0) { num++; a[num]=x%10; x/=10; } return dfs(num,-1,0,1); } int main() { memset(f,-1,sizeof(f)); while(scanf("%d%d",&l,&r)&&l!=0&&r!=0) { printf("%d\n",slove(r)-slove(l-1)); } return 0; }