1 条题解
-
1多云转晴 (求乖的小野猫) LV 2 MOD @ 2021-07-19 20:33:20
方法:数位DP
标程:
#include<bits/stdc++.h> #define N 19 using namespace std; int x,nD,d[N],f[N][2],ok[N][2]; int F(int p,bool lmt) { if (p==0) return 1; if (ok[p][lmt]) return f[p][lmt]; ok[p][lmt]=1; for (int i=0;i<=(lmt?d[p]:9);++i) { if (i==4) continue; f[p][lmt]+=F(p-1,lmt&&i==d[p]); } return f[p][lmt]; } int main() { cin>>x; do{ d[++nD]=x%10; x/=10; }while(x); cout<<F(nD,1)-1<<endl; return 0; }
- 1