BZOJ2194 快速傅利葉之二 NTT,卷積

2022-04-30 06:51:08 字數 1266 閱讀 4416

time limit: 10 sec  memory limit: 259 mb

submit: 1776  solved: 1055

[submit][status][discuss]

請計算c[k]=sigma(a[i]*b[i-k]) 其中 k < = i < n ,並且有 n < = 10 ^ 5。 a,b中的元素均為小於等於100的非負整數。

第一行乙個整數n,接下來n行,第i+2..i+n-1行,每行兩個數,依次表示a[i],b[i] (0 < = i < n)。

輸出n行,每行乙個整數,第i行輸出c[i-1]。

53 1

2 41 1

2 41 4

2412106

1題目中給的公式不好搞

我們按照套路,將$b$翻轉一下

$$c(k) = \sum_0^n a_i * b_$$

此時後面的式子就只與$k$有關了

設$$d(n - 1 + k) = \sum_0^n a_i * b_$$

直接ntt

#include#define swap(x,y) x ^= y, y ^= x, x ^= y

#define ll long long

using

namespace

std;

const

int maxn = 3 * 1e5 + 10

;inline

intread()

while(c >= '

0' && c <= '

9') x = x * 10 + c - '

0',c =getchar();

return x *f;

}const

int p = 998244353, g = 3, gi = 332748118

;int

n;int

ll a[maxn], b[maxn], r[maxn];

ll fastpow(ll a,

int p, int

mod)

return

base %mod;

}ll ntt(ll *a, int type, int n, int

mod) }}

if(type == -1) }

intmain()

bzoj 2194 快速傅利葉之二

time limit 10 sec memory limit 259 mb submit 1314 solved 772 submit status discuss 請計算c k sigma a i b i k 其中 k i n 並且有 n 10 5。a,b中的元素均為小於等於100的非負整數。第一...

BZOJ 2194 快速傅利葉之二

已知 a,b a,b 序列,計算 ck ai bi k ck ai bi k 觀察題目名稱,可以想到fft fft能解決的是形如下面的式子 hk fi gk i hk fi gk i 可以發現,f f 陣列的下標和 g role presentation style position relativ...

bzoj2194 快速傅利葉之二

題目鏈結 給出兩個長度為n的數列a,b。求乙個數列c滿足 c k sum limits na i b i k n le 10 5 長得和卷積很像,觀察一下卷積的形式 c k sum limits ia i b k i 所以先把b陣列翻轉過來。然後所求的式子就變成了 c k sum limits na...