Run ID | 作者 | 问题 | 语言 | 测评结果 | Time | Memory | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|
97463 | 揭伟琦 | 不吉利的数 | C++ | Output Limit Exceeded | 30 MS | 268 KB | 736 | 2024-11-15 23:03:00 |
#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; }