237052026-01-27 18:59:17abcdSzivárványszámokpython3Futási hiba 0/4517ms3112 KiB
#include <bits/stdc++.h>
using namespace std;
using ll=long long;

const int maxn=80;
ll dp[maxn][10][2][2];
string s;
int n;

ll cnt(int pos,int dig,bool tight,bool up){
    if(pos==n)return 1;
    if(dp[pos][dig][tight][up]!=-1)return dp[pos][dig][tight][up];
    ll res=0;
    int lim=tight?s[pos]-'0':9;
    for(int i=0;i<=lim;i++){
        if(i==dig)res+=cnt(pos+1,i,tight&&i==lim,up);
        if(i>dig&&up)res+=cnt(pos+1,i,tight&&i==lim,true);
        if(i>dig&&!up)continue;
        if(i<dig)res+=cnt(pos+1,i,tight&&i==lim,false);
    }
    return dp[pos][dig][tight][up]=res;
}

int main(){
    cin>>s;
    n=s.size();
    memset(dp,-1LL,sizeof dp);
    bool yes=true,up=true;;
    int prev=s[0]-'0';
    for(int i=1;i<n;i++){
        int x=s[i]-'0';
        if(x>prev&&!up)yes=false;
        if(x<prev)up=false;
    }
    cout<<cnt(0,0,true,true)-yes<<'\n';
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base0/45
1Futási hiba0/016ms3112 KiB
2Futási hiba0/016ms2868 KiB
3Futási hiba0/014ms2868 KiB
4Futási hiba0/114ms2852 KiB
5Futási hiba0/116ms3076 KiB
6Futási hiba0/114ms2868 KiB
7Futási hiba0/116ms2868 KiB
8Futási hiba0/114ms3012 KiB
9Futási hiba0/114ms2868 KiB
10Futási hiba0/116ms3060 KiB
11Futási hiba0/116ms2868 KiB
12Futási hiba0/116ms2860 KiB
13Futási hiba0/216ms3068 KiB
14Futási hiba0/216ms3036 KiB
15Futási hiba0/214ms3004 KiB
16Futási hiba0/214ms3028 KiB
17Futási hiba0/116ms2868 KiB
18Futási hiba0/217ms2868 KiB
19Futási hiba0/217ms2892 KiB
20Futási hiba0/216ms2964 KiB
21Futási hiba0/316ms3060 KiB
22Futási hiba0/216ms2860 KiB
23Futási hiba0/217ms2864 KiB
24Futási hiba0/217ms3060 KiB
25Futási hiba0/216ms2832 KiB
26Futási hiba0/216ms3004 KiB
27Futási hiba0/214ms3004 KiB
28Futási hiba0/216ms3052 KiB
29Futási hiba0/216ms3064 KiB
30Futási hiba0/216ms2880 KiB