明明這次又要出去旅遊了,和上次不同的是,他這次要去宇宙探險!我們暫且不討論他有多麼nc,他又幻想了他應該帶一些什麼東西。理所當然的,你當然要幫他計算攜帶n件物品的方案數。他這次又準備帶一些受歡迎的食物,如:蜜桃多啦,雞塊啦,承德漢堡等等當然,他又有一些稀奇古怪的限制:每種食物的限制如下:
承德漢堡:偶數個
可樂:0個或1個
雞腿:0個,1個或2個
蜜桃多:奇數個
雞塊:4的倍數個
包子:0個,1個,2個或3個
土豆片炒肉:不超過乙個。
麵包:3的倍數個
注意,這裡我們懶得考慮明明對於帶的食物該怎麼搭配著吃,也認為每種食物都是以『個』為單位(反正是幻想嘛),只要總數加起來是n就算一種方案。因此,對於給出的n,你需要計算出方案數,並對10007取模。
生成函式最簡單的題……把所有生成函式乘起來,最後得到x(1
−x)4
x\over(1-x)^4
(1−x)4
x。而x(1
−x)4
=∑
i>0c
i+33
xi+1
=\sum_c_^3x^
(1−x)4
x=∑
i>0
ci+3
3xi
+1。所以最後的答案為cn+
23
c_^3
cn+23
。
#include
using
namespace std;
#define ll long long
#define pa pair
const
int maxn=
510;
const
int mod=
10007
;char s[maxn]
;int
pow(
int x,
int y)
intmain()
BZOJ3028 食物(生成函式)
乙個人要帶 n 個物品,共有 8 種物品,每種的限制分別如下 偶數個 0 1個 0 1 2個 奇數個 4的倍數個 0 1 2 3個 0 1個 3的倍數個。求方案數。n 10 對於八個物品的限制,分別構造生成函式,然後乘起來就是我們要的解。化簡後得到 f x frac x 1 x x2 4 現在考慮求...
BZOJ3028 食物(生成函式)
顯然構造出生成函式 則有f x 1 x2 x4 1 x 1 x x2 x x3 x5 1 x4 x8 1 x x2 x3 1 x 1 x3 x6 化為有限,則有f x x 1 x 2 1 x x2 1 x x2 x3 1 x2 2 1 x3 1 x4 x 1 x x2 1 x 1 x 2 1 x3 ...
bzoj3028 食物(生成函式 Lucas)
明明這次又要出去旅遊了,和上次不同的是,他這次要去宇宙探險!我們暫且不討論他有多麼nc,他又幻想了他應該帶一些什麼東西。理所當然的,你當然要幫他計算攜帶n件物品的方案數。他這次又準備帶一些受歡迎的食物,如 蜜桃多啦,雞塊啦,承德漢堡等等當然,他又有一些稀奇古怪的限制 每種食物的限制如下 承德漢堡 偶...