思路** (c 語言)
總結轉眼到了收穫的季節,由於有tt的專業指導,lele獲得了大豐收。特別是水果,lele一共種了n種水果,有蘋果,梨子,香蕉,西瓜……不但味道好吃,樣子更是好看。
於是,很多人們慕名而來,找lele買水果。
甚至連大名鼎鼎的hdu acm總教頭 lcy 也來了。lcy丟擲一打百元大鈔,「我要買由m個水果組成的水果拼盤,不過我有個小小的要求,對於每種水果,個數上我有限制,既不能少於某個特定值,也不能大於某個特定值。而且我不要兩份一樣的拼盤。你隨意搭配,你能組出多少種不同的方案,我就買多少份!」
現在就請你幫幫lele,幫他算一算到底能夠賣出多少份水果拼盤給lcy了。
注意,水果是以個為基本單位,不能夠再分。對於兩種方案,如果各種水果的數目都相同,則認為這兩種方案是相同的。
最終lele拿了這筆錢,又可以繼續他的學業了~
本題目包含多組測試,請處理到檔案結束(eof)。
每組測試第一行包括兩個正整數n和m(含義見題目描述,0對於每組測試,在一行裡輸出總共能夠賣的方案數。
題目資料保證這個答案小於10^9
母函式的應用
對於每種水果 fru
it
ifruit_i
fruiti
的上下界設為 ai,
bi
a_i, b_i
ai,bi
並設 ci=
bi−a
i+
1c_i = b_i-a_i+1
ci=bi
−ai
+1則母函式可以寫為
∏ i=
1n(x
ai+x
ai+1
+...
+abi
)\prod_^n(x^+x^+...+a^)
∏i=1n
(xai
+xa
i+1
+...
+abi
)化簡 (等比數列求和) 為
∏ i=
1n(x
ai1−
xci1
−x
)\prod_^n(x^\frac})
∏i=1n
(xai
1−x
1−xc
i)
進一步化簡為
x ∑i
=1na
i×∏i
=1n(
1−xc
i)×∑
i=1n
(cn−
1+ii
xi
)x^^n a^i}\times \prod_^n (1-x^) \times \sum_^n(c_^ix^i)
x∑i=1n
ai×
∏i=1
n(1
−xci
)×∑
i=1n
(cn
−1+i
ixi
)問題要求上式中 x
mx^m
xm的係數
上式可以分為三部分, 左邊部分直接累加得到, 即
設 t ot
al=∑
i=1n
ai
total=\sum_^na^i
total=
∑i=1
nai
那麼原問題等價於求
f (x
)=∏i
=1n(
1−xc
i)×∑
i=1n
(cn−
1+ii
xi
)f(x)= \prod_^n (1-x^) \times \sum_^n(c_^ix^i)
f(x)=∏
i=1n
(1−
xci
)×∑i
=1n
(cn−
1+ii
xi)中xm
−tot
al
x^xm
−tot
al的係數對於累乘項 ∏i=
1n(1
−xci
)\prod_^n (1-x^)
∏i=1n
(1−x
ci)
, 直接暴力展開 (因為 m−t
otal
≤100
m-total \le 100
m−tota
l≤10
0, 所以 最多迴圈 m
×100
m\times100
m×10
0 次, 可以接受)
對於累加項 ∑i=
1n(c
n−1+
iixi
)\sum_^n(c_^ix^i)
∑i=1n
(cn−
1+ii
xi)
, 由於問題沒有要求取模, 所以沒法用階乘來算 (因為最高需要 200 的階乘), 所以我使用楊輝三角來建表計算.
#include
#include
long
long coeff[
101]
;long
long temp[
101]
;long
long c[
100]
[100];
int m, n;
long
long
mom(
int i)
intmain()
while
(scanf
("%d%d"
,&n,
&m)!=
eof)
int need = m - total;
long
long ans =0;
for(
int j =
0; j <= need; j++
)printf
("%lld\n"
, ans);}
}
乙個月前的我可能看見母函式就一臉懵逼, 現在總算是會一點了qaq 組合數學學習
圓排列和項鍊排列 問題 八個人圍在乙個桌子吃飯,怎麼坐?先簡單看看 這是乙個圓排列,我們可以把它變成線排列。可以知道我們可以從4個方面剪開這個環得到4種排列。2341 1234 3412 4123 如果從n個數中取r個進行線排列 p n,r 種方法。但如果是圓排列呢,由上面的例子可知四個線排列就等於...
hdu 1220 Cube 組合數學
給你乙個邊長n的正方體,切割成n n n個單位體積的小正方體,求所有公共頂點數 2的小正方體的對數。公共點的數目可能有 0,1,2,4.我們用總的對數減掉有四個公共點的對數就可以了。總的對數 n 3 n 3 1 2 一共有n 3塊小方塊,從中選出2塊 而4個交點的立方體對是兩個立方體共面的情況,所以...
hdu5160 Apple 組合數學
問題描述 現在要給n個小朋友發蘋果,每乙個小朋友都會有自己相應的蘋果數目 cdots a 1 a 2 a 3 a n 發蘋果的時候,小朋友先從左到右隨機站成一排。設站好後從左到右小朋友的標號是 cdots p 1 p 2 p 3 p n 他們所需要的蘋果數目是 cdots a p 1 a p 2 a...