外观
FFMP 20240926
约 381 字大约 1 分钟
2024-09-26
记 sum(A) 为集合A中所有元素的和。
例如,sum(1,6,7)=1+6+7=14;特别地,sum(∅)=0.
有集合 S={x∈N+∣x≤n}, 若 A⊆S 且 sum(A) 是k的倍数,则称 A 是 S 的 k-好子集。
求:
(1)n=1145141919810,k=2 时,S 的 k-好子集的个数;
(2)n=10,k=3时,S 的 k-好子集的个数。
答案
(1)
构造一种对应关系:如果两个集合区别仅有包不包含 1,则将这两个集合对应。
- 每一个集合只有唯一的另外一个集合与之互相对应;
- 对应的集合的和一定相差 1,即一奇一偶。
因此,和为偶数的集合一定占全部集合的一半,即 21×21145141919810=21145141919809
(2)
设 fi,j 为 {1,2,⋯,i} 的所有子集中,和除以 k 的余数为 j 的子集的数量。
(简便起见,以下使用 % 表示求余)
考虑从 i−1 递推到 i 的情形:
- 若不选 i,则和不变;
- 若强制选 i,则和会增加 i,即余数从 (j−i)%k 变为 j.
因此,
fi,j=fi−1,j+fi−1,(j−i)%k
由 f0,0=1(sum(∅)=0)列表得:
j\i | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
---|---|---|---|---|---|---|---|---|---|---|---|
0 | 1 | 1 | 2 | 4 | 6 | 12 | 24 | 44 | 88 | 176 | 344 |
1 | 0 | 1 | 1 | 2 | 6 | 10 | 20 | 44 | 84 | 168 | 344 |
2 | 0 | 0 | 1 | 2 | 4 | 10 | 20 | 40 | 84 | 168 | 336 |
故答案为 f10,0=344.