#P3046. Ant Counting

Ant Counting

题目描述

贝西有一天在蚁丘旁观察蚂蚁们来回搬运食物时注意到,许多蚂蚁是兄弟姐妹,彼此难以区分。她还发现,有时只有一只蚂蚁去觅食,有时几只,有时则是全部。这形成了大量不同的蚂蚁组合!

出于数学兴趣,贝西开始思考:假设蚁巢有TT个蚂蚁家族(编号11TT),总共有AA只蚂蚁。每个家族有NiNi只蚂蚁1Ni100(1 ≤ Ni ≤ 100)。那么,可以组成多少组大小为SSB1SBAB(1 ≤ S ≤ B ≤ A)的蚂蚁集合?

例如,观察到一个蚂蚁组合包含家族{1,1,2,2,31, 1, 2, 2, 3}(顺序不一定如此)。可能的蚂蚁集合如下:

  • 大小为11的集合:{11}, {22}, {33}(共33个)
  • 大小为22的集合:{1,11,1}, {1,21,2}, {1,31,3}, {2,22,2}, {2,32,3}(共55个)
  • 大小为33的集合:{1,1,21,1,2}, {1,1,31,1,3}, {1,2,21,2,2}, {1,2,31,2,3}, {2,2,32,2,3}(共55个)
  • 大小为44的集合:{1,2,2,31,2,2,3}, {1,1,2,241,1,2,24}, {1,1,2,31,1,2,3}(共33个)
  • 大小为55的集合:{1,1,2,2,31,1,2,2,3}(共11个)

你的任务是计算给定数据下可以组成的所有可能集合数量。

输入格式

  • 11行:44个用空格分隔的整数TT(家族数)、AA(总蚂蚁数)、SS(最小集合大小)、BB(最大集合大小)
  • 22行到第A+1A+1行:每行一个整数,表示蚁巢中存在的蚂蚁类型

输出格式

  • 11行:可以组成的大小为SSBB(含)的集合数量。输出结果的最后六位数字(不含前导零或空格)

输入样例

3 5 2 3
1
2
2
1
3

输出样例

10

提示

输入解释: 共有3种蚂蚁类型(1到3),总共有5只蚂蚁。可以组成多少大小为2或3的集合?

输出解释: 5个大小为2的集合;5个大小为3的集合。总数为10。

来源

USACO 2005年11月银组