Submission #50024037
Source Code Expand
#include <stdio.h>
#include <inttypes.h>
char N[32];
int mod;
int memo_mod[32][2][10 * 32][10 * 32];
uint64_t memo[32][2][10 * 32][10 * 32];
uint64_t calc(int pos, int sati, int sum_mod, int digit_sum) {
uint64_t ans = 0;
int limit, i;
if (N[pos] == '\0') return sum_mod == 0 && digit_sum == mod;
if (digit_sum > mod) return 0;
if (memo_mod[pos][sati][sum_mod][digit_sum] == mod) {
return memo[pos][sati][sum_mod][digit_sum];
}
limit = sati ? N[pos] - '0' : 9;
for (i = 0; i <= limit; i++) {
ans += calc(pos + 1, sati && i == limit, (sum_mod * 10 + i) % mod, digit_sum + i);
}
memo[pos][sati][sum_mod][digit_sum] = ans;
memo_mod[pos][sati][sum_mod][digit_sum] = mod;
return ans;
}
int main(void) {
int i;
int max = 0;
uint64_t ans = 0;
if (scanf("%31s", N) != 1) return 1;
for (i = 0; N[i] != '\0'; i++) max += 9;
for (i = 1; i <= max; i++) {
mod = i;
ans += calc(0, 1, 0, 0);
}
printf("%" PRIu64 "\n", ans);
return 0;
}
Submission Info
| Submission Time | |
|---|---|
| Task | E - Digit Sum Divisible |
| User | mikecat |
| Language | C (gcc 12.2.0) |
| Score | 525 |
| Code Size | 993 Byte |
| Status | AC |
| Exec Time | 224 ms |
| Memory | 10884 KiB |
Judge Result
| Set Name | Sample | All | ||||
|---|---|---|---|---|---|---|
| Score / Max Score | 0 / 0 | 525 / 525 | ||||
| Status |
|
|
| Set Name | Test Cases |
|---|---|
| Sample | 00_sample_00.txt, 00_sample_01.txt, 00_sample_02.txt |
| All | 00_sample_00.txt, 00_sample_01.txt, 00_sample_02.txt, 01_random_00.txt, 01_random_01.txt, 02_max_00.txt, 02_max_01.txt, 03_min_00.txt, 04_corner_00.txt |
| Case Name | Status | Exec Time | Memory |
|---|---|---|---|
| 00_sample_00.txt | AC | 1 ms | 1752 KiB |
| 00_sample_01.txt | AC | 1 ms | 1980 KiB |
| 00_sample_02.txt | AC | 44 ms | 5924 KiB |
| 01_random_00.txt | AC | 187 ms | 10412 KiB |
| 01_random_01.txt | AC | 174 ms | 9864 KiB |
| 02_max_00.txt | AC | 224 ms | 10884 KiB |
| 02_max_01.txt | AC | 190 ms | 9792 KiB |
| 03_min_00.txt | AC | 0 ms | 1732 KiB |
| 04_corner_00.txt | AC | 27 ms | 4916 KiB |