File tree Expand file tree Collapse file tree 4 files changed +130
-0
lines changed Expand file tree Collapse file tree 4 files changed +130
-0
lines changed Original file line number Diff line number Diff line change 1+ // @brief Polynomial Interpolation (Geometric Sequence)
2+ #define PROBLEM " https://judge.yosupo.jp/problem/polynomial_interpolation_on_geometric_sequence"
3+ #pragma GCC optimize("Ofast,unroll-loops")
4+ #include " cp-algo/math/poly.hpp"
5+ #include < bits/stdc++.h>
6+
7+ using namespace std ;
8+ using namespace cp_algo ::math;
9+
10+ const int mod = 998244353 ;
11+ using base = modint<mod>;
12+ using polyn = poly_t <base>;
13+
14+ void solve () {
15+ int n, a, r;
16+ cin >> n >> a >> r;
17+ vector<base> y (n);
18+ copy_n (istream_iterator<base>(cin), n, begin (y));
19+ polyn (y).chirpz_inverse (r, n).mulx (base (a).inv ()).print (n);
20+ }
21+
22+ signed main () {
23+ // freopen("input.txt", "r", stdin);
24+ ios::sync_with_stdio (0 );
25+ cin.tie (0 );
26+ int t = 1 ;
27+ while (t--) {
28+ solve ();
29+ }
30+ }
Original file line number Diff line number Diff line change 1+ // @brief Multipoint Evaluation
2+ #define PROBLEM " https://judge.yosupo.jp/problem/multipoint_evaluation"
3+ #pragma GCC optimize("Ofast,unroll-loops")
4+ #include " cp-algo/math/poly.hpp"
5+ #include < bits/stdc++.h>
6+
7+ using namespace std ;
8+ using namespace cp_algo ::math;
9+
10+ const int mod = 998244353 ;
11+ using base = modint<mod>;
12+ using polyn = poly_t <base>;
13+
14+ void solve () {
15+ int n, m;
16+ cin >> n >> m;
17+ vector<base> f (n), x (m);
18+ copy_n (istream_iterator<base>(cin), n, begin (f));
19+ copy_n (istream_iterator<base>(cin), m, begin (x));
20+ polyn (polyn (f).eval (x)).print (m);
21+ }
22+
23+ signed main () {
24+ // freopen("input.txt", "r", stdin);
25+ ios::sync_with_stdio (0 );
26+ cin.tie (0 );
27+ int t = 1 ;
28+ while (t--) {
29+ solve ();
30+ }
31+ }
Original file line number Diff line number Diff line change 1+ // @brief Multipoint Evaluation (Geometric Sequence)
2+ #define PROBLEM " https://judge.yosupo.jp/problem/multipoint_evaluation_on_geometric_sequence"
3+ #pragma GCC optimize("Ofast,unroll-loops")
4+ #include " cp-algo/math/poly.hpp"
5+ #include < bits/stdc++.h>
6+
7+ using namespace std ;
8+ using namespace cp_algo ::math;
9+
10+ const int mod = 998244353 ;
11+ using base = modint<mod>;
12+ using polyn = poly_t <base>;
13+
14+ void solve () {
15+ int n, m, a, r;
16+ cin >> n >> m >> a >> r;
17+ vector<base> f (n);
18+ copy_n (istream_iterator<base>(cin), n, begin (f));
19+ polyn (f).mulx (a).chirpz (r, m).print (m);
20+ }
21+
22+ signed main () {
23+ // freopen("input.txt", "r", stdin);
24+ ios::sync_with_stdio (0 );
25+ cin.tie (0 );
26+ int t = 1 ;
27+ while (t--) {
28+ solve ();
29+ }
30+ }
Original file line number Diff line number Diff line change 1+ // @brief Shift of Sampling Points of Polynomial
2+ #define PROBLEM " https://judge.yosupo.jp/problem/shift_of_sampling_points_of_polynomial"
3+ #define CP_ALGO_MAXN 1 << 20
4+ #pragma GCC optimize("Ofast,unroll-loops")
5+ #include " cp-algo/math/poly.hpp"
6+ #include < bits/stdc++.h>
7+
8+ using namespace std ;
9+ using namespace cp_algo ::math;
10+
11+ const int mod = 998244353 ;
12+ using base = modint<mod>;
13+ using polyn = poly_t <base>;
14+
15+ // TODO: Use single-convolution approach
16+ void solve () {
17+ int n, m, c;
18+ cin >> n >> m >> c;
19+ vector<base> a (n);
20+ copy_n (istream_iterator<base>(cin), n, begin (a));
21+ polyn A = polyn (a);
22+ polyn Q = polyn ({1 , -1 }).pow (n, n + 1 );
23+ A -= ((A * Q).div_xk (n).mod_xk (m) * Q.inv (m)).mod_xk (m).mul_xk (n);
24+ A = A.reverse (n + m);
25+ polyn shift = polyn ({1 , -1 }).pow (c, n).shift (1 ).mulx (-1 );
26+ auto R = (A.div_xk (n - 1 ) * shift) + (A.mod_xk (n - 1 ) * shift).div_xk (n - 1 );
27+ R.div_xk (1 ).reverse (m).print (m);
28+ }
29+
30+ signed main () {
31+ // freopen("input.txt", "r", stdin);
32+ ios::sync_with_stdio (0 );
33+ cin.tie (0 );
34+ int t;
35+ t = 1 ;// cin >> t;
36+ while (t--) {
37+ solve ();
38+ }
39+ }
You can’t perform that action at this time.
0 commit comments