1 条题解

  • 1
    @ 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

信息

ID
1002
难度
7
分类
数学 点击显示
标签
(无)
递交数
3
已通过
1
通过率
33%
上传者