proconlib

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

View the Project on GitHub KodamaD/proconlib

:heavy_check_mark: traits/num_ring.cpp

Depends on

Verified with

Code

#pragma once
#include "sum_group.cpp"
#include "product_monoid.cpp"

template <class T> struct NumRing {
    using Type = T;
    using Sum = SumGroup<T>;
    using Product = ProductMonoid<T>;
};
#line 2 "traits/sum_group.cpp"

template <class T> struct SumGroup {
    using Type = T;
    static constexpr T identity() { return T(0); }
    static constexpr T operation(const T& l, const T& r) { return l + r; }
    static constexpr T inverse(const T& x) { return -x; }
};
#line 2 "traits/product_monoid.cpp"

template <class T> struct ProductMonoid {
    using Type = T;
    static constexpr T identity() { return T(1); }
    static constexpr T operation(const T& l, const T& r) { return l * r; }
};
#line 4 "traits/num_ring.cpp"

template <class T> struct NumRing {
    using Type = T;
    using Sum = SumGroup<T>;
    using Product = ProductMonoid<T>;
};
Back to top page