1 条题解
-
0

#include <bits/stdc++.h> using std::cin; using std::cout; typedef unsigned long long u64; const int N = 4054; int n, mod; int a[N]; int f[N], g[N]; inline void add(int &x, const int y) {x += y - mod, x += x >> 31 & mod;} void work() { int i, j, ans = 0; u64 x; cin >> n >> mod; for (i = 0; i < n; ++i) cin >> a[i]; f[1] = *g = mod - 1; for (i = 1; i <= n; ++i) { add(f[i + 1] = f[i], f[i - 1]), x = f[i + 1], g[i] = x * g[i - 1] % mod; for (j = i - 1; j; --j) g[j] = (g[j] + x * g[j - 1]) % mod; } for (i = 0; i < n; ++i) ans = (ans + (u64)a[i] * g[n - i]) % mod; cout << ans << '\n'; } int main() { int T; //std::ios::sync_with_stdio(false), cin.tie(NULL); //for (cin >> T; T; --T) work(); return 0; }
- 1
信息
- ID
- 5898
- 时间
- 6000ms
- 内存
- 1024MiB
- 难度
- 10
- 标签
- 递交数
- 3
- 已通过
- 1
- 上传者