Submission #15031609
Source Code Expand
#include<bits/stdc++.h>
using namespace std;
// #define TRACE
#ifdef TRACE
#define trace(...) __f(#__VA_ARGS__, __VA_ARGS__)
template <typename Arg1>
void __f(const char* name, Arg1&& arg1){
cerr << name << " : " << arg1 << std::endl;
}
template <typename Arg1, typename... Args>
void __f(const char* names, Arg1&& arg1, Args&&... args){
const char* comma = strchr(names + 1, ',');cerr.write(names, comma - names) << " : " << arg1<<" | ";__f(comma+1, args...);
}
#else
#define trace(...)
#endif
#define LL long long
string s;
int K;
int len;
LL dp[101][2][4];
LL solve(int i, int res, int k) {
if(i == len - 1) {
if(k >= 2) {
return 0;
}
else if(k == 1) {
int maxD = res == 1? s[i]-'0' : 9;
if(res == 1) {
if(maxD == 0) {
return 0;
} else {
return maxD;
}
} else {
return 9;
}
}
else {
return 1;
}
}
if(k == 0) {
return 1;
}
LL &ret = dp[i][res][k];
if(ret != -1) {
return ret;
}
ret = 0;
int maxD = res == 1? s[i]-'0' : 9;
for(int d=0;d<=maxD;d++) {
if(res == 0) {
if(d == 0) {
ret = ret + solve(i+1, 0, k);
} else {
ret = ret + solve(i+1, 0, k-1);
}
} else {
if(maxD == 0) {
ret = ret + solve(i+1, 1, k);
} else {
if(d == 0) {
ret = ret + solve(i+1, 0, k);
}
else if(d == maxD) {
ret = ret + solve(i+1, 1, k-1);
}
else {
ret = ret + solve(i+1, 0, k-1);
}
}
}
// trace(i, res, k, maxD, d, ret);
}
return ret;
}
int main() {
cin >> s >> K;
len = (int)s.size();
memset(dp, -1, sizeof(dp));
LL ans = solve(0, 1, K);
cout << ans << endl;
return 0;
}
Submission Info
| Submission Time |
|
| Task |
E - Almost Everywhere Zero |
| User |
yesnomaybe |
| Language |
C++ (GCC 9.2.1) |
| Score |
500 |
| Code Size |
1714 Byte |
| Status |
AC |
| Exec Time |
8 ms |
| Memory |
3580 KiB |
Judge Result
| Set Name |
Sample |
All |
| Score / Max Score |
0 / 0 |
500 / 500 |
| Status |
|
|
| Set Name |
Test Cases |
| Sample |
sample_01, sample_02, sample_03, sample_04 |
| All |
hand_01, hand_02, hand_03, hand_04, hand_05, max_01, max_02, max_03, max_04, max_05, random_01, random_02, random_03, random_04, random_05, random_06, random_07, random_08, sample_01, sample_02, sample_03, sample_04 |
| Case Name |
Status |
Exec Time |
Memory |
| hand_01 |
AC |
8 ms |
3500 KiB |
| hand_02 |
AC |
2 ms |
3464 KiB |
| hand_03 |
AC |
2 ms |
3400 KiB |
| hand_04 |
AC |
1 ms |
3400 KiB |
| hand_05 |
AC |
2 ms |
3500 KiB |
| max_01 |
AC |
2 ms |
3504 KiB |
| max_02 |
AC |
2 ms |
3576 KiB |
| max_03 |
AC |
1 ms |
3524 KiB |
| max_04 |
AC |
2 ms |
3468 KiB |
| max_05 |
AC |
2 ms |
3524 KiB |
| random_01 |
AC |
2 ms |
3508 KiB |
| random_02 |
AC |
2 ms |
3564 KiB |
| random_03 |
AC |
2 ms |
3564 KiB |
| random_04 |
AC |
2 ms |
3468 KiB |
| random_05 |
AC |
2 ms |
3520 KiB |
| random_06 |
AC |
2 ms |
3580 KiB |
| random_07 |
AC |
2 ms |
3568 KiB |
| random_08 |
AC |
2 ms |
3504 KiB |
| sample_01 |
AC |
2 ms |
3576 KiB |
| sample_02 |
AC |
2 ms |
3520 KiB |
| sample_03 |
AC |
2 ms |
3520 KiB |
| sample_04 |
AC |
2 ms |
3392 KiB |