7188 | 2024. 01. 02 15:10:11 | anon | Szivárványszámok | cpp17 | Elfogadva 45/45 | 4ms | 4332 KiB |
#include <bits/stdc++.h>
#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;
if(i == (N[0] - '0'))
ns = N.substr(1);
else
ns = string(N.size() - 1, '9');
ans += solve(ns, i, true, dp) + solve(ns, i - 1, false, dp);
}
}
else {
for(i = min(limit, (ll) (N[0] - '0')); i >= 0; i--) {
string ns;
if(i == (N[0] - '0'))
ns = N.substr(1);
else
ns = string(N.size() - 1, '9');
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 = solve(N, 1, true, dp);
for(i = 0; i < N.size(); i++)
ans += solve(string(i, '9'), 1, true, dp);
cout << ans + 1 << '\n';
return 0;
}
Részfeladat | Összpont | Teszt | Verdikt | Idő | Memória | ||
---|---|---|---|---|---|---|---|
base | 45/45 | ||||||
1 | Elfogadva | 0/0 | 3ms | 1836 KiB | |||
2 | Elfogadva | 0/0 | 3ms | 2064 KiB | |||
3 | Elfogadva | 0/0 | 4ms | 2536 KiB | |||
4 | Elfogadva | 1/1 | 3ms | 2460 KiB | |||
5 | Elfogadva | 1/1 | 3ms | 2664 KiB | |||
6 | Elfogadva | 1/1 | 3ms | 2872 KiB | |||
7 | Elfogadva | 1/1 | 3ms | 3092 KiB | |||
8 | Elfogadva | 1/1 | 3ms | 3168 KiB | |||
9 | Elfogadva | 1/1 | 3ms | 3268 KiB | |||
10 | Elfogadva | 1/1 | 3ms | 3272 KiB | |||
11 | Elfogadva | 1/1 | 3ms | 3300 KiB | |||
12 | Elfogadva | 1/1 | 3ms | 3516 KiB | |||
13 | Elfogadva | 2/2 | 3ms | 3632 KiB | |||
14 | Elfogadva | 2/2 | 3ms | 3628 KiB | |||
15 | Elfogadva | 2/2 | 3ms | 3632 KiB | |||
16 | Elfogadva | 2/2 | 3ms | 3708 KiB | |||
17 | Elfogadva | 1/1 | 3ms | 3704 KiB | |||
18 | Elfogadva | 2/2 | 4ms | 3856 KiB | |||
19 | Elfogadva | 2/2 | 4ms | 3872 KiB | |||
20 | Elfogadva | 2/2 | 4ms | 3972 KiB | |||
21 | Elfogadva | 3/3 | 4ms | 4060 KiB | |||
22 | Elfogadva | 2/2 | 3ms | 3844 KiB | |||
23 | Elfogadva | 2/2 | 3ms | 4044 KiB | |||
24 | Elfogadva | 2/2 | 3ms | 4256 KiB | |||
25 | Elfogadva | 2/2 | 4ms | 4332 KiB | |||
26 | Elfogadva | 2/2 | 4ms | 4332 KiB | |||
27 | Elfogadva | 2/2 | 4ms | 4272 KiB | |||
28 | Elfogadva | 2/2 | 4ms | 4308 KiB | |||
29 | Elfogadva | 2/2 | 4ms | 4300 KiB | |||
30 | Elfogadva | 2/2 | 4ms | 4296 KiB |