cp-documentation

This documentation is automatically generated by online-judge-tools/verification-helper

View the Project on GitHub zawa-tin/cp-documentation

:heavy_check_mark: ABC436-G Linear Inequation
(Test/AtCoder/abc436_g.test.cpp)

$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をして終わり。

Depends on

Code

// #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
Back to top page