zoukankan      html  css  js  c++  java
  • CSU-2173 Use FFT

    CSU-2173 Use FFT

    Description

    Bobo computes the product P(x)⋅Q(x)=(c_0 + c_1x + … + c_{n+m}x^{n + m}) for two polynomials P(x)=(a_0 + a_1x + … + a_nx^n) and Q(x)=(b_0 + b_1x + … + b_mx^m). Find $ (c_L + c_{L + 1} + … + c_R) $ modulo ($10^9 $ + 7) for given L and R.

    • 1 ≤ n, m ≤ 5 × (10^5)
    • 0 ≤ L ≤ R ≤ n + m
    • 0 ≤ (a_i, b_i) ≤ (10^9)
    • Both the sum of n and the sum of m do not exceed (10^6).

    Input

    The input consists of several test cases and is terminated by end-of-file.

    The first line of each test case contains four integers n, m, L, R.

    The second line contains (n + 1) integers (a_0, a_1, …, a_n).

    The third line contains (m + 1) integers (b_0, b_1, …, b_m).

    Output

    For each test case, print an integer which denotes the reuslt.

    Sample Input

    1 1 0 2
    1 2
    3 4
    1 1 1 2
    1 2
    3 4
    2 3 0 5
    1 2 999999999
    1 2 3 1000000000
    

    Sample Output

    21
    18
    5
    

    题解

    这题标题是Use FFT所以当然是用FFT做了(滑稽)

    这题其实是个数学题+找规律题,借用一张图片

    所以我们对b求前缀和,用a去乘,注意细节就好了

    #include<bits/stdc++.h>
    #define maxn 500050
    #define p 1000000007
    using namespace std;
    typedef long long ll;
    ll a[maxn], b[maxn];
    ll pre[maxn * 2];
    int main() {
    	int n, m, l, r;
    	while (scanf("%d%d%d%d", &n, &m, &l, &r) != EOF) {
    		for (int i = 1; i <= n + 1; i++) {
    			scanf("%lld", &a[i]);
    		}
    		for (int i = 1; i <= m + 1; i++) {
    			scanf("%lld", &b[i]);
    			pre[i] = (pre[i - 1] + b[i]) % p;
    		}
    		for (int i = m + 2; i <= r + 1; i++) {
    			pre[i] = pre[i - 1];
    		}
    		ll ans = 0;
    		for (int i = 1; i <= n + 1; i++) {
    			ans = (ans + a[i] * (pre[r + 1] - pre[l] + p) % p) % p;
    			if (l > 0) l--;
    			if (r >= 0) r--;
    		}
    		printf("%lld
    ", (ans + p) % p);
    	}
    	return 0;
    }
    
  • 相关阅读:
    第28月第23天 lineFragmentPadding
    第28月第22天 iOS动态库
    第28月第21天 记事本Unicode 游戏编程中的人工智能技术
    第28月第11天 vim -b
    第28月第10天 iOS动态库
    第28月第8天
    第28月第7天 本地摄像头方向
    第28月第5天 uibutton交换方法
    第28月第4天 __bridge_transfer
    python __getattr__ __setattr__
  • 原文地址:https://www.cnblogs.com/artoriax/p/10349114.html
Copyright © 2011-2022 走看看