51nod1348 乘積之和

2021-08-21 02:31:19 字數 1179 閱讀 2738

###description

給出由n個正整數組成的陣列a,有q次查詢,每個查詢包含乙個整數k,從陣列a中任選k個(k <= n)把他們乘在一起得到乙個乘積。求所有不同的方案得到的乘積之和,由於結果巨大,輸出mod 100003的結果即可。例如:1 2 3,從中任選1個共3種方法, ,和為6。從中任選2個共3種方法, ,和為2 + 3 + 6 = 11。

###solution

用f l,

r,x(

0≤x≤

r−l+

1)

f_(0\leq x\leq r-l+1)

fl,r,x

​(0≤

x≤r−

l+1)

表示區間[l,

r]

[l,r]

[l,r

]選了x

xx個的乘積和,可以發現fl,

rf_

fl,r​為fl,

pf_

fl,p​與fp+

1,r(

l≤

p

f_(l\leq pfp

+1,r

​(l≤

p的卷積。

直接分治ntt

nttnt

t即可,選兩個模數合併一下答案。

###code

#include#include#include#include#define fo(i,j,k) for(int i=j;i<=k;++i)

#define fd(i,j,k) for(int i=j;i>=k;--i)

using namespace std;

typedef long long ll;

const int n=5e4+10,p=1e5+3,mo1=998244353,mo2=1004535809;

ll ny1,ny2;

const ll mo=1002772198720536577ll;

int a[n],fn,mo;

ll f[18][n<<2],g[18][n<<2],w[n<<2];

ll pow(ll x,int y)

void ntt(ll *a,int fn,int sig)

for(int m=2;m<=fn;m<<=1)

}int main()

}

51Nod 1225 餘數之和

acm模版 對於數論只會打表找規律的我來說,我一上來就打了一張表,然後發掘其中的規律 沒法子,腦子跟不上,推不出來規律,只能找規律。通過這個表我們可以發現 從第100項到51項是等差數列0 49,base 1 從第50項到34項是等差數列0 32,base 2 從第33項到26項是等差數列1 22,...

51nod1220 約數之和

首先列出題目要求的式子 an s i 1n j 1n d ij an s i 1n j 1n a i b j ajb a,b 1 你問我為啥?我也不知道 an s i 1n j 1n a i b j ajb d a b d d 1 n d d an d bn a in b j najb d 1n d...

51 Nod 1225 餘數之和

基準時間限制 1 秒 空間限制 131072 kb 分值 80 難度 5級演算法題 f n n 1 n 2 n 3 n n 其中 表示mod,也就是餘數。例如f 6 6 1 6 2 6 3 6 4 6 5 6 6 0 0 0 2 1 0 3。給出n,計算f n 由於結果很大,輸出mod 100000...