首页 > 其他 > 详细

CSU-2173 Use FFT

时间:2019-02-02 20:44:11      阅读:155      评论:0      收藏:0      [点我收藏+]

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\n", (ans + p) % p);
    }
    return 0;
}

CSU-2173 Use FFT

原文:https://www.cnblogs.com/artoriax/p/10349114.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!