Submission #6896149
Source Code Expand
#include<bits/stdc++.h>
#define rep(i,a,b) for(int i=a;i<b;i++)
#define rrep(i,a,b) for(int i=a;i>=b;i--)
#define fore(i,a) for(auto &i:a)
#define all(x) (x).begin(),(x).end()
//#pragma GCC optimize ("-O3")
using namespace std; void _main(); int main() { cin.tie(0); ios::sync_with_stdio(false); _main(); }
typedef long long ll; const int inf = INT_MAX / 2; const ll infl = 1LL << 60;
template<class T>bool chmax(T& a, const T& b) { if (a < b) { a = b; return 1; } return 0; }
template<class T>bool chmin(T& a, const T& b) { if (b < a) { a = b; return 1; } return 0; }
//---------------------------------------------------------------------------------------------------
ll modpow(ll a, ll n, int mod) {
ll r = 1; a %= mod;
while (n) r = r * ((n % 2) ? a : 1) % mod, a = a * a % mod, n >>= 1;
return r;
}
vector<ll> LagrangePolynomialGetCoefficient(vector<pair<int, int>> points, int mod) {
int N = points.size();
vector<ll> polynomial(N + 1);
polynomial[0] = 1;
fore(p, points) {
vector<ll> tmp(N + 1);
rep(i, 0, N) tmp[i + 1] = polynomial[i];
rep(i, 0, N) tmp[i] = (tmp[i] - ((polynomial[i] * p.first) % mod) + mod) % mod;
swap(polynomial, tmp);
}
vector<ll> res(N);
rep(i, 0, N) if (points[i].second) {
ll Q = 1;
rep(j, 0, N) if (j != i) Q = Q * (points[i].first - points[j].first) % mod;
Q = modpow((Q % mod + mod) % mod, mod - 2, mod);
vector<ll> tmp(N + 1);
rep(j, 0, N + 1) tmp[j] = polynomial[j];
rrep(j, N, 1) {
Q %= mod;
res[j - 1] = (res[j - 1] + ((tmp[j] * Q) % mod) * points[i].second) % mod;
tmp[j - 1] = (tmp[j - 1] + tmp[j] * points[i].first) % mod;
}
}
rep(i, 0, N) res[i] %= mod;
return res;
}
/*---------------------------------------------------------------------------------------------------
∧_∧
∧_∧ (´<_` ) Welcome to My Coding Space!
( ´_ゝ`) / ⌒i @hamayanhamayan
/ \ | |
/ / ̄ ̄ ̄ ̄/ |
__(__ニつ/ _/ .| .|____
\/____/ (u ⊃
---------------------------------------------------------------------------------------------------*/
int P, A[3030];
//---------------------------------------------------------------------------------------------------
void _main() {
cin >> P;
rep(i, 0, P) cin >> A[i];
vector<pair<int, int>> ps;
rep(i, 0, P) ps.push_back({ i, A[i] });
auto ans = LagrangePolynomialGetCoefficient(ps, P);
rep(i, 0, P) {
if (i) printf(" ");
printf("%lld", ans[i]);
}
printf("\n");
}
Submission Info
Judge Result
| Set Name |
Sample |
All |
| Score / Max Score |
0 / 0 |
600 / 600 |
| Status |
|
|
| Set Name |
Test Cases |
| Sample |
a01, a02, a03 |
| All |
a01, a02, a03, b04, b05, b06, b07, b08, b09, b10, b11, b12, b13, b14, b15, b16, b17, b18, b19, b20, b21, b22, b23, b24, b25, b26, b27, b28, b29, b30, b31, b32, b33, b34, b35, b36, b37, b38, b39, b40, b41, b42, b43 |
| Case Name |
Status |
Exec Time |
Memory |
| a01 |
AC |
1 ms |
256 KiB |
| a02 |
AC |
1 ms |
256 KiB |
| a03 |
AC |
1 ms |
256 KiB |
| b04 |
AC |
1 ms |
256 KiB |
| b05 |
AC |
1 ms |
256 KiB |
| b06 |
AC |
1 ms |
256 KiB |
| b07 |
AC |
188 ms |
384 KiB |
| b08 |
AC |
743 ms |
384 KiB |
| b09 |
AC |
745 ms |
384 KiB |
| b10 |
AC |
743 ms |
384 KiB |
| b11 |
AC |
188 ms |
384 KiB |
| b12 |
AC |
188 ms |
384 KiB |
| b13 |
AC |
465 ms |
384 KiB |
| b14 |
AC |
465 ms |
384 KiB |
| b15 |
AC |
270 ms |
512 KiB |
| b16 |
AC |
663 ms |
384 KiB |
| b17 |
AC |
465 ms |
384 KiB |
| b18 |
AC |
465 ms |
384 KiB |
| b19 |
AC |
459 ms |
384 KiB |
| b20 |
AC |
571 ms |
384 KiB |
| b21 |
AC |
687 ms |
384 KiB |
| b22 |
AC |
713 ms |
384 KiB |
| b23 |
AC |
739 ms |
384 KiB |
| b24 |
AC |
740 ms |
384 KiB |
| b25 |
AC |
743 ms |
384 KiB |
| b26 |
AC |
480 ms |
384 KiB |
| b27 |
AC |
357 ms |
384 KiB |
| b28 |
AC |
245 ms |
384 KiB |
| b29 |
AC |
219 ms |
384 KiB |
| b30 |
AC |
192 ms |
384 KiB |
| b31 |
AC |
193 ms |
384 KiB |
| b32 |
AC |
188 ms |
384 KiB |
| b33 |
AC |
1 ms |
256 KiB |
| b34 |
AC |
1 ms |
256 KiB |
| b35 |
AC |
414 ms |
384 KiB |
| b36 |
AC |
592 ms |
384 KiB |
| b37 |
AC |
189 ms |
384 KiB |
| b38 |
AC |
129 ms |
384 KiB |
| b39 |
AC |
2 ms |
256 KiB |
| b40 |
AC |
164 ms |
384 KiB |
| b41 |
AC |
5 ms |
256 KiB |
| b42 |
AC |
49 ms |
384 KiB |
| b43 |
AC |
140 ms |
384 KiB |