This documentation is automatically generated by online-judge-tools/verification-helper
$A_{N + 1} = 1$ を追加することで、 $\sum_{i}A_ix_i = M$ を満たす $x$ を数えることに帰着する。 要は貯金箱の焦りをすれば良い。
このdpのテクニックの肝は「$x$ を何個でも選べる」を「 $x, 2x, 4x, 8x, \dots$ をそれぞれコスト $1, 2, 4, 8, \dots, $ かかるとして高々 $1$ 個とる」という話に置き換えるところだと思っている。
実は、あまり賢いことをしなくても $[x^{M}]1/\prod_{i}(1-x^{A_{i}})$ なのでBostan-Moriをして終わり。
// #define PROBLEM "https://atcoder.jp/contests/abc436/tasks/abc436_g"
#define PROBLEM "https://onlinejudge.u-aizu.ac.jp/courses/lesson/2/ITP1/1/ITP1_1_A"
/*
* AtCoder Beginner Contest 436 G - Linear Inequation
*/
#include "../../Src/FPS/FPSNTTFriendly.hpp"
#include "../../Src/FPS/BostanMori.hpp"
using namespace zawa;
#include "atcoder/modint"
using mint = atcoder::modint998244353;
using fps = FPSNTTFriendly<mint::mod()>;
#include <iostream>
using namespace std;
int main() {
#ifdef ATCODER
cin.tie(0);
cout.tie(0);
ios::sync_with_stdio(0);
int N;
long long M;
cin >> N >> M;
fps Q{1, -1};
while (N--) {
int a;
cin >> a;
fps f(a + 1);
f[0] = 1;
f[a] = -1;
Q *= f;
}
cout << BostanMori(M, fps{1}, Q).val() << '\n';
#else
cout << "Hello World\n";
#endif
}Traceback (most recent call last):
File "/opt/hostedtoolcache/Python/3.12.13/x64/lib/python3.12/site-packages/onlinejudge_verify/documentation/build.py", line 71, in _render_source_code_stat
bundled_code = language.bundle(stat.path, basedir=basedir, options={'include_paths': [basedir]}).decode()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/hostedtoolcache/Python/3.12.13/x64/lib/python3.12/site-packages/onlinejudge_verify/languages/cplusplus.py", line 187, in bundle
bundler.update(path)
File "/opt/hostedtoolcache/Python/3.12.13/x64/lib/python3.12/site-packages/onlinejudge_verify/languages/cplusplus_bundle.py", line 401, in update
self.update(self._resolve(pathlib.Path(included), included_from=path))
File "/opt/hostedtoolcache/Python/3.12.13/x64/lib/python3.12/site-packages/onlinejudge_verify/languages/cplusplus_bundle.py", line 401, in update
self.update(self._resolve(pathlib.Path(included), included_from=path))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/hostedtoolcache/Python/3.12.13/x64/lib/python3.12/site-packages/onlinejudge_verify/languages/cplusplus_bundle.py", line 260, in _resolve
raise BundleErrorAt(path, -1, "no such header")
onlinejudge_verify.languages.cplusplus_bundle.BundleErrorAt: atcoder/modint: line -1: no such header