題意
西行寺幽幽子(Saigyouji Yuyuko)是白玉樓的大小姐
幽幽子餓了,廚子妖夢準備了 類菜,第 類菜有 種
幽幽子有 個用餐計劃,每個計劃中幽幽子會選擇一類菜中的一種喫掉,並獲得一定的美味值
具體來說,如果幽幽子在第 次進食中選擇了第 類菜,那麼會獲得的美味值
幽幽子最後獲得的美味值是每次進食的美味值的異或和
幽幽子想嘗試所有不同的美味值,所以她希望知道,對於每個 ,最後得到的美味值爲 的方案數是多少
答案可能很大,你只需要求出答案對 取模之後的結果
對於所有的數據,
測試點編號 | |||
---|---|---|---|
1 | 19 | 1 | |
2~3 | 10 | 10 | |
4 | 14 | 2 | |
5 | 16 | 2 | |
6 | 18 | 2 | |
7 | 10 | 3 | |
8 | 14 | 3 | |
9 | 17 | 3 | |
10 | 12 | 4 | |
11 | 16 | 4 | |
12 | 10 | 5 | |
13 | 15 | 5 | |
14 | 8 | 6 | |
15 | 14 | 6 | |
16 | 6 | 7 | |
17 | 13 | 7 | |
18 | 4 | 8 | |
19 | 12 | 8 | |
20 | 11 | 9 |
題解
直觀的想法是把每個用餐計劃看作一個的多項式,對它們分別求之後對應位相乘,再求。
但這樣效率不行,考慮如何對每一位較快地求出所有用餐計劃的該位的值的乘積。由的定義發現每一位的值只有種情況,考慮計算每一種情況的個數。
枚舉類菜的每一個非空子集,在每個用餐計劃中把對應位置下標異或起來的下標對應的值設爲,把這個加起來做一遍,可以得到一個關於每種情況個數的方程。這個方程在加上所有情況和=n就形成個方程和個未知數,又發現這些方程的形式與很像,即對每個方程的右邊一起構成的多項式做即可求出每個未知數。