MCPcopy Create free account
hub / github.com/atcoder/ac-library / main

Function main

test/example/modint_usage.cpp:8–59  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

6
7using mint = static_modint<11>;
8int main() {
9 mint a = 10;
10 mint b(3);
11
12 // equal
13 assert(a == 21);
14 assert(a == -1);
15 assert(-1 == a);
16
17 // negative
18 assert(-b == 8);
19
20 // plus
21 assert(a + b == 2); // (10 + 3) mod 11
22 assert(1 + a == 0);
23
24 // minus
25 assert(a - b == 7); // (10 - 3) mod 11
26 assert(b - a == 4);
27
28 // mul
29 assert(a * b == 8); // (10 * 3) mod 11
30
31 // inv
32 assert(b.inv() == 4); // (3 * 4) mod 11 == 1
33
34 // div
35 assert(a / b == 7); // (10 * 4) mod 11
36
37 // +=, -=, *=, /=
38 a += b;
39 assert(a == 2 && b == 3);
40 a -= b;
41 assert(a == 10 && b == 3);
42 a *= b;
43 assert(a == 8 && b == 3);
44 a /= b;
45 assert(a == 10 && b == 3);
46
47 // pow
48 assert(mint(2).pow(4) == 5); // 16 mod 11
49
50 // print value
51 printf("%d\n", a.val()); // 10
52
53 // get mod
54 assert(mint::mod() == 11 && a.mod() == 11);
55
56 // mint(x) と書くとmodを取る操作が発生します((x % mod + mod) % modをmodintに代入します)
57 // mint::raw(x) はxをmodを取らずに代入するので高速です(もちろんxが[0, mod)であることを利用者が保証しないといけません)
58 assert(mint::raw(3) == 3);
59}

Callers

nothing calls this directly

Calls 4

invMethod · 0.45
powMethod · 0.45
valMethod · 0.45
modMethod · 0.45

Tested by

no test coverage detected