Submission #7020148
Source Code Expand
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cmath>
#include<string>
#include<cstring>
#include<algorithm>
#include<sstream>
#include<complex>
#include<functional>
#include<vector>
#include<map>
#include<queue>
#include<deque>
#include<stack>
#include<set>
using namespace std;
#define endl '\n'
using ll = long long;
using ull = unsigned long long;
using pii = pair<int, int>;
using vi = vector<int>;
using vvi = vector<vector<int>>;
using vl = vector<ll>;
template<typename T = long long>
T gcd(T a, T b) { return b ? gcd(b, a%b) : a; }
// value
int p;
int a[3000];
/* べき乗を計算 */
ll mpow(ll v, long long k) {
ll res = 1, tmp = v;
while (k) {
if (k & 1) res *= tmp;
tmp *= tmp;
res %= p;
tmp %= p;
k >>= 1;
}
return res;
}
ll inv(ll v) { return mpow(v, p - 2); }
ll b[3000];
ll fact[3000], fact_inv[3000];
void calc() {
fact[0] = 1;
fact_inv[0] = 1;
for (int i = 1; i < 3000; i++) {
fact[i] = fact[i - 1] * i;
fact[i] %= p;
fact_inv[i] = inv(fact[i]);
}
}
ll comb(ll n, ll r) {
return (fact[n] * fact_inv[r] % p) * fact_inv[n - r] % p;
}
void solve() {
cin >> p;
for (int i = 0; i < p; i++) {
cin >> a[i];
}
calc();
for (int j = 0; j < p; j++) {
if (a[j] == 1) {
ll j2 = 1;
for (int k = 0; k < p; k++) {
b[p - 1 - k] += (-1) * comb(p - 1, k) * j2 % p;
b[p - 1 - k] += p; b[p - 1 - k] %= p;
j2 *= -j; j2 += p; j2 %= p;
}
b[0] += 1;
}
}
for (int i = 0; i < p - 1; i++) {
cout << b[i] % p << " ";
}
cout << b[p - 1] % p << endl;
return;
}
int main() {
cin.tie(0);
ios::sync_with_stdio(false);
solve();
return 0;
}
Submission Info
| Submission Time | |
|---|---|
| Task | F - Polynomial Construction |
| User | mattyan1053 |
| Language | C++14 (GCC 5.4.1) |
| Score | 600 |
| Code Size | 1741 Byte |
| Status | AC |
| Exec Time | 550 ms |
| Memory | 384 KiB |
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 | 2 ms | 384 KiB |
| b08 | AC | 550 ms | 384 KiB |
| b09 | AC | 549 ms | 384 KiB |
| b10 | AC | 549 ms | 384 KiB |
| b11 | AC | 3 ms | 384 KiB |
| b12 | AC | 3 ms | 384 KiB |
| b13 | AC | 276 ms | 384 KiB |
| b14 | AC | 276 ms | 384 KiB |
| b15 | AC | 81 ms | 384 KiB |
| b16 | AC | 471 ms | 384 KiB |
| b17 | AC | 276 ms | 384 KiB |
| b18 | AC | 276 ms | 384 KiB |
| b19 | AC | 270 ms | 384 KiB |
| b20 | AC | 380 ms | 384 KiB |
| b21 | AC | 494 ms | 384 KiB |
| b22 | AC | 520 ms | 384 KiB |
| b23 | AC | 545 ms | 384 KiB |
| b24 | AC | 547 ms | 384 KiB |
| b25 | AC | 549 ms | 384 KiB |
| b26 | AC | 285 ms | 384 KiB |
| b27 | AC | 170 ms | 384 KiB |
| b28 | AC | 59 ms | 384 KiB |
| b29 | AC | 33 ms | 384 KiB |
| b30 | AC | 7 ms | 384 KiB |
| b31 | AC | 6 ms | 384 KiB |
| b32 | AC | 3 ms | 384 KiB |
| b33 | AC | 1 ms | 256 KiB |
| b34 | AC | 1 ms | 256 KiB |
| b35 | AC | 229 ms | 384 KiB |
| b36 | AC | 404 ms | 384 KiB |
| b37 | AC | 130 ms | 384 KiB |
| b38 | AC | 24 ms | 384 KiB |
| b39 | AC | 2 ms | 256 KiB |
| b40 | AC | 81 ms | 384 KiB |
| b41 | AC | 4 ms | 256 KiB |
| b42 | AC | 24 ms | 384 KiB |
| b43 | AC | 22 ms | 384 KiB |