@@ -9,48 +9,51 @@ struct Factorial {
99 }
1010 static mint inv (int n) {
1111 static long long mod = mint::get_mod ();
12- static vector<mint> _inv ({0 , 1 });
12+ static vector<mint> buf ({0 , 1 });
1313 assert (n != 0 );
1414 if (mod != mint::get_mod ()) {
1515 mod = mint::get_mod ();
16- _inv = vector<mint>({0 , 1 });
16+ buf = vector<mint>({0 , 1 });
1717 }
18- if (_inv .size () <= n) _inv .reserve (n + 1 );
19- while (_inv .size () <= n) {
20- long long k = _inv .size (), q = (mod + k - 1 ) / k;
21- _inv .push_back (q * _inv [k * q - mod]);
18+ if (( int )buf .size () <= n) buf .reserve (n + 1 );
19+ while (( int )buf .size () <= n) {
20+ long long k = buf .size (), q = (mod + k - 1 ) / k;
21+ buf .push_back (q * buf [k * q - mod]);
2222 }
23- return _inv [n];
23+ return buf [n];
2424 }
2525 static mint fact (int n) {
2626 static long long mod = mint::get_mod ();
27- static vector<mint> _fact ({1 , 1 });
27+ static vector<mint> buf ({1 , 1 });
2828 assert (n >= 0 );
2929 if (mod != mint::get_mod ()) {
3030 mod = mint::get_mod ();
31- _fact = vector<mint>({1 , 1 });
31+ buf = vector<mint>({1 , 1 });
3232 }
33- if (_fact .size () <= n) _fact .reserve (n + 1 );
34- while (_fact .size () <= n) {
35- long long k = _fact .size ();
36- _fact .push_back (_fact .back () * k);
33+ if (( int )buf .size () <= n) buf .reserve (n + 1 );
34+ while (( int )buf .size () <= n) {
35+ long long k = buf .size ();
36+ buf .push_back (buf .back () * k);
3737 }
38- return _fact [n];
38+ return buf [n];
3939 }
4040 static mint fact_inv (int n) {
4141 static long long mod = mint::get_mod ();
42- static vector<mint> _fact_inv ({1 , 1 });
42+ static vector<mint> buf ({1 , 1 });
4343 assert (n >= 0 );
4444 if (mod != mint::get_mod ()) {
4545 mod = mint::get_mod ();
46- _fact_inv = vector<mint>({1 , 1 });
46+ buf = vector<mint>({1 , 1 });
4747 }
48- if (_fact_inv.size () <= n) _fact_inv.reserve (n + 1 );
49- while (_fact_inv.size () <= n) {
50- long long k = _fact_inv.size ();
51- _fact_inv.push_back (_fact_inv.back () * inv (k));
48+ if ((int )buf.size () <= n) {
49+ inv (n);
50+ buf.reserve (n + 1 );
5251 }
53- return _fact_inv[n];
52+ while ((int )buf.size () <= n) {
53+ long long k = buf.size ();
54+ buf.push_back (buf.back () * inv (k));
55+ }
56+ return buf[n];
5457 }
5558 static mint binom (int n, int r) {
5659 if (r < 0 || r > n) return 0 ;
@@ -81,7 +84,7 @@ struct Factorial {
8184 if (n < 0 || r < 0 ) return 0 ;
8285 return r == 0 ? 1 : binom (n + r - 1 , r);
8386 }
84- }; // namespace Factorial
87+ };
8588/* *
8689 * @brief 階乗, 二項係数
8790 */
0 commit comments