Please sign in first.
Submission #69119838
Source Code Expand
#include <algorithm> #include <iostream> #include <vector> #include <atcoder/all> int main() { using namespace std; int n, a, b, c; cin >> n >> a >> b >> c; using mint = atcoder::modint998244353; int nn = n + 1; vector<mint> fact(nn, 1), invfact(nn, 1); for (int i = 0; i < nn - 1; i++) fact[i + 1] = fact[i] * (i + 1); invfact[nn - 1] = fact[nn - 1].inv(); for (int i = nn - 2; i >= 0; i--) invfact[i] = invfact[i + 1] * (i + 1); auto solve1 = [&] { vector<mint> f(n + 1); f[0] = 1; for (int p : {a, b, c}) { for (int i = 0; i < nn - p; ++i) { f[i + p] += f[i]; } } return f[n]; }; cout << solve1().val() << "\n"; auto solve2 = [&] { vector<mint> f(n + 1); f[0] = fact[n]; for (int p : {a, b, c}) { vector<mint> fp(n + 1); for (int i = 0; i < nn; i += p) { fp[i] = invfact[i]; } auto g = atcoder::convolution(f, fp); f = vector(g.begin(), g.begin() + nn); } return f[n]; }; cout << solve2().val() << "\n"; }
Submission Info
Submission Time | |
---|---|
Task | G - Balls and Boxes |
User | wasd314 |
Language | C++ 23 (gcc 12.2) |
Score | 575 |
Code Size | 1216 Byte |
Status | AC |
Exec Time | 158 ms |
Memory | 18544 KiB |
Judge Result
Set Name | Sample | All | ||||
---|---|---|---|---|---|---|
Score / Max Score | 0 / 0 | 575 / 575 | ||||
Status |
|
|
Set Name | Test Cases |
---|---|
Sample | 00_sample_00.txt, 00_sample_01.txt, 00_sample_02.txt, 00_sample_03.txt |
All | 00_sample_00.txt, 00_sample_01.txt, 00_sample_02.txt, 00_sample_03.txt, 01_random_00.txt, 01_random_01.txt, 01_random_02.txt, 01_random_03.txt, 01_random_04.txt, 01_random_05.txt, 01_random_06.txt, 01_random_07.txt, 01_random_08.txt, 01_random_09.txt, 01_random_10.txt, 01_random_11.txt, 02_corner_00.txt, 02_corner_01.txt, 02_corner_02.txt, 02_corner_03.txt, 02_corner_04.txt, 02_corner_05.txt, 02_corner_06.txt, 02_corner_07.txt, 02_corner_08.txt, 02_corner_09.txt, 02_corner_10.txt, 02_corner_11.txt, 02_corner_12.txt, 02_corner_13.txt, 02_corner_14.txt, 02_corner_15.txt |
Case Name | Status | Exec Time | Memory |
---|---|---|---|
00_sample_00.txt | AC | 1 ms | 3528 KiB |
00_sample_01.txt | AC | 1 ms | 3616 KiB |
00_sample_02.txt | AC | 154 ms | 18420 KiB |
00_sample_03.txt | AC | 5 ms | 3796 KiB |
01_random_00.txt | AC | 80 ms | 13192 KiB |
01_random_01.txt | AC | 155 ms | 18440 KiB |
01_random_02.txt | AC | 77 ms | 10976 KiB |
01_random_03.txt | AC | 155 ms | 18412 KiB |
01_random_04.txt | AC | 80 ms | 12436 KiB |
01_random_05.txt | AC | 154 ms | 18372 KiB |
01_random_06.txt | AC | 78 ms | 11164 KiB |
01_random_07.txt | AC | 155 ms | 18456 KiB |
01_random_08.txt | AC | 78 ms | 10916 KiB |
01_random_09.txt | AC | 154 ms | 18416 KiB |
01_random_10.txt | AC | 78 ms | 11528 KiB |
01_random_11.txt | AC | 155 ms | 18412 KiB |
02_corner_00.txt | AC | 158 ms | 18364 KiB |
02_corner_01.txt | AC | 157 ms | 18508 KiB |
02_corner_02.txt | AC | 156 ms | 18480 KiB |
02_corner_03.txt | AC | 156 ms | 18412 KiB |
02_corner_04.txt | AC | 157 ms | 18416 KiB |
02_corner_05.txt | AC | 155 ms | 18368 KiB |
02_corner_06.txt | AC | 156 ms | 18444 KiB |
02_corner_07.txt | AC | 155 ms | 18420 KiB |
02_corner_08.txt | AC | 155 ms | 18448 KiB |
02_corner_09.txt | AC | 156 ms | 18384 KiB |
02_corner_10.txt | AC | 154 ms | 18532 KiB |
02_corner_11.txt | AC | 154 ms | 18544 KiB |
02_corner_12.txt | AC | 153 ms | 18404 KiB |
02_corner_13.txt | AC | 153 ms | 18412 KiB |
02_corner_14.txt | AC | 78 ms | 11488 KiB |
02_corner_15.txt | AC | 80 ms | 13076 KiB |