1 条题解

  • 0
    @ 2026-1-11 23:01:15

    #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

    [CERC2013] Captain Obvious and the Rabbit-Man

    信息

    ID
    5898
    时间
    6000ms
    内存
    1024MiB
    难度
    10
    标签
    递交数
    3
    已通过
    1
    上传者