71892024-01-02 15:39:57anonSzivárványszámokcpp17Elfogadva 45/454ms4000 KiB
#include <bits/stdc++.h>
#define NS() ((i == (N[0] - '0')) ? N.substr(1) : string(N.size() - 1, '9'))
#define FastIO ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL)
typedef long long ll;
using namespace std;
ll solve(string N, ll limit, bool left, unordered_map<string, ll> &dp) {
    ll i, ans;
    string key = N + " " + to_string(limit) + " " + (left ? "1" : "0");
    auto found = dp.find(key);
    if(found == dp.end()) {
        if(N.empty())
            ans = !left;
        else {
            ans = 0;
            if(left) {
                for(i = limit; i <= (N[0] - '0'); i++) {
                    string ns = NS();
                    ans += solve(ns, i, true, dp) + solve(ns, i - 1, false, dp);
                }
            }
            else {
                for(i = min(limit, (ll) (N[0] - '0')); i >= 0; i--)
                    ans += solve(NS(), i, false, dp);
            }
        }
        dp[key] = ans;
    }
    else
        ans = found->second;
    return ans;
}
int main() {
    FastIO;
    ll i, ans;
    string N;
    unordered_map<string, ll> dp;
    cin >> N;
    if(N == "0") {
        cout << "0\n";
        return 0;
    }
    for(i = N.size() - 1; i >= 0; i--) {
        N[i]--;
        if(N[i] == '0' - 1)
            N[i] = '9';
        else
            break;
    }
    ans = 1 + solve(N, 1, true, dp);
    for(i = 0; i < N.size(); i++)
        ans += solve(string(i, '9'), 1, true, dp);
    cout << ans << '\n';
    return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base45/45
1Elfogadva0/03ms1832 KiB
2Elfogadva0/03ms2064 KiB
3Elfogadva0/04ms2520 KiB
4Elfogadva1/13ms2624 KiB
5Elfogadva1/13ms2528 KiB
6Elfogadva1/13ms2632 KiB
7Elfogadva1/13ms3008 KiB
8Elfogadva1/13ms3104 KiB
9Elfogadva1/13ms3328 KiB
10Elfogadva1/13ms3304 KiB
11Elfogadva1/13ms3260 KiB
12Elfogadva1/13ms3264 KiB
13Elfogadva2/23ms3264 KiB
14Elfogadva2/23ms3264 KiB
15Elfogadva2/23ms3264 KiB
16Elfogadva2/23ms3392 KiB
17Elfogadva1/13ms3464 KiB
18Elfogadva2/24ms3500 KiB
19Elfogadva2/24ms3652 KiB
20Elfogadva2/24ms3848 KiB
21Elfogadva3/34ms3720 KiB
22Elfogadva2/23ms3444 KiB
23Elfogadva2/23ms3516 KiB
24Elfogadva2/23ms3440 KiB
25Elfogadva2/24ms3724 KiB
26Elfogadva2/24ms3728 KiB
27Elfogadva2/24ms3740 KiB
28Elfogadva2/24ms3752 KiB
29Elfogadva2/24ms3740 KiB
30Elfogadva2/24ms4000 KiB