###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...