Algorithm

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

View the Project on GitHub yosupo06/Algorithm

:heavy_check_mark: src/modint61.test.cpp

Depends on

Code

#define PROBLEM "https://judge.yosupo.jp/problem/aplusb"

#include "aplusb.hpp"

#include "base.hpp"
#include "math/modint61.hpp"
#include "util/random.hpp"

using Mint = ModInt61;

int main() {
    Random gen = Random();
    for (int ph = 0; ph < 100; ph++) {
        ull a = gen.uniform(0ULL, Mint::get_mod() - 1);
        ull b = gen.uniform(0ULL, Mint::get_mod() - 1);
        ull expect = (__uint128_t(a) + b) % Mint::get_mod();
        ull actual = (Mint(a) + Mint(b)).v;
        assert(expect == actual);
    }
    for (int ph = 0; ph < 100; ph++) {
        ull a = gen.uniform(0ULL, Mint::get_mod() - 1);
        ull b = gen.uniform(0ULL, Mint::get_mod() - 1);
        ull expect = (__uint128_t(a) - b + Mint::get_mod()) % Mint::get_mod();
        ull actual = (Mint(a) - Mint(b)).v;
        assert(expect == actual);
    }
    for (int ph = 0; ph < 100; ph++) {
        ull a = gen.uniform(0ULL, Mint::get_mod() - 1);
        ull b = gen.uniform(0ULL, Mint::get_mod() - 1);
        ull expect = __uint128_t(a) * b % Mint::get_mod();
        ull actual = (Mint(a) * Mint(b)).v;
        assert(expect == actual);
    }
    for (int ph = 0; ph < 100; ph++) {
        Mint a = Mint(gen.uniform(0ULL, Mint::get_mod() - 1));
        Mint ia = a.inv();
        assert((a * ia).v == 1);
    }
    solve_aplusb();
    return 0;
}
Back to top page