File tree Expand file tree Collapse file tree 2 files changed +9
-13
lines changed Expand file tree Collapse file tree 2 files changed +9
-13
lines changed Original file line number Diff line number Diff line change @@ -6,7 +6,7 @@ namespace cp_algo::math {
66 // fact/rfact/small_inv are caching
77 // Beware of usage with dynamic mod
88 template <typename T>
9- T fact (int n) {
9+ T fact (auto n) {
1010 static std::vector<T> F (maxn);
1111 static bool init = false ;
1212 if (!init) {
@@ -20,7 +20,7 @@ namespace cp_algo::math {
2020 }
2121 // Only works for modint types
2222 template <typename T>
23- T rfact (int n) {
23+ T rfact (auto n) {
2424 static std::vector<T> F (maxn);
2525 static bool init = false ;
2626 if (!init) {
@@ -34,7 +34,7 @@ namespace cp_algo::math {
3434 return F[n];
3535 }
3636 template <typename T>
37- T small_inv (int n) {
37+ T small_inv (auto n) {
3838 static std::vector<T> F (maxn);
3939 static bool init = false ;
4040 if (!init) {
@@ -46,16 +46,16 @@ namespace cp_algo::math {
4646 return F[n];
4747 }
4848 template <typename T>
49- T binom_large (T n, int r) {
49+ T binom_large (T n, auto r) {
5050 assert (r < maxn);
5151 T ans = 1 ;
52- for (int i = 0 ; i < r; i++) {
52+ for (decltype (r) i = 0 ; i < r; i++) {
5353 ans = ans * T (n - i) * small_inv<T>(i + 1 );
5454 }
5555 return ans;
5656 }
5757 template <typename T>
58- T binom (int n, int r) {
58+ T binom (auto n, auto r) {
5959 if (r < 0 || r > n) {
6060 return T (0 );
6161 } else if (n >= maxn) {
Original file line number Diff line number Diff line change @@ -12,14 +12,10 @@ const int mod = 998244353;
1212typedef modint<mod> base;
1313typedef poly_t <base> polyn;
1414
15- base nCr (int n, int r) {
16- return fact<base>(n) * rfact<base>(r) * rfact<base>(n-r);
17- }
18-
1915polyn xm1k (size_t k) {
2016 polyn::Vector ans (k+1 );
21- for (int i = 0 ; i <= k; i++) {
22- ans[i] = (k - i) & 1 ? -nCr (k, i) : nCr (k, i);
17+ for (size_t i = 0 ; i <= k; i++) {
18+ ans[i] = (k - i) & 1 ? -binom<base> (k, i) : binom<base> (k, i);
2319 }
2420 return ans;
2521}
@@ -32,7 +28,7 @@ void solve() {
3228 polyn H = num / den;
3329 base ans = 0 ;
3430
35- base id[ d+1 ] ;
31+ vector< base> id ( d+1 ) ;
3632 vector<int > lp (d+1 );
3733 id[0 ] = bpow (base (0 ), d);
3834 id[1 ] = 1 ;
You can’t perform that action at this time.
0 commit comments