提出 #50024037
ソースコード 拡げる
Copy
#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);}
#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; }
提出情報
提出日時 | |
---|---|
問題 | E - Digit Sum Divisible |
ユーザ | mikecat |
言語 | C (gcc 12.2.0) |
得点 | 525 |
コード長 | 993 Byte |
結果 | AC |
実行時間 | 224 ms |
メモリ | 10884 KB |
ジャッジ結果
セット名 | Sample | All | ||||
---|---|---|---|---|---|---|
得点 / 配点 | 0 / 0 | 525 / 525 | ||||
結果 |
|
|
セット名 | テストケース |
---|---|
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 |
ケース名 | 結果 | 実行時間 | メモリ |
---|---|---|---|
00_sample_00.txt | AC | 1 ms | 1752 KB |
00_sample_01.txt | AC | 1 ms | 1980 KB |
00_sample_02.txt | AC | 44 ms | 5924 KB |
01_random_00.txt | AC | 187 ms | 10412 KB |
01_random_01.txt | AC | 174 ms | 9864 KB |
02_max_00.txt | AC | 224 ms | 10884 KB |
02_max_01.txt | AC | 190 ms | 9792 KB |
03_min_00.txt | AC | 0 ms | 1732 KB |
04_corner_00.txt | AC | 27 ms | 4916 KB |