luogu#P5577. [CmdOI2019] 算力训练
[CmdOI2019] 算力训练
题目背景
最近,出题人快乐地学习了如何解一元二次方程。
晚上在宿舍里,出题人梦见了一个使用 进制的国度,入乡随俗嘛,出题人在这里也使用 进制。
当然,这个国度里面的人也懂数学,所以解不出一元二次方程的出题人并没有逃掉算力训练。
题目描述
出题人在纸条上写了 个 进制自然数,由于他很懒,这些数的位数不会太多,都不会超过 位。
为了训练算力,他每次会随意取出一个子序列 (允许一个数都不选) ,然后把这些数都加起来。
他又觉得进位太麻烦了,干脆规定加法不进位。
算了几次之后,他突然很想知道自己得到每个数的方案数是多少,可是他太菜了,又不会算。冥思苦想一番之后,突然被起床铃拉出了梦境。
他觉得这个问题很有趣,只好求助于单手虐暴无数代数题的你,来帮忙计算一下。
形式化题意 : 对于一个序列 ,定义其权值 为 中元素做 进制不进位加法的和。
给出 和一个长为 的序列 。保证 。
对于 ,分别求出下列式子的值 :
$${\rm Ans}[t]=\sum\limits_{\text{R 是 S 的子序列}}\big[W(R)=t\big] $$注 :根据正确的题意可推知 。
输入格式
第一行三个整数 ,意义为题目中所述。
第二行 个整数,之间用空格隔开,表示纸条上的数字。
(注意,纸条上的数均为 进制数)
输出格式
共 行,你需要在第 行输出得到数 的方案数,答案对 取模。
3 5 1
1 2 3
2
2
1
2
1
5 6 1
1 1 4 5 1 4
8
7
4
2
4
7
提示
样例解释
对于样例#1,共有 种选取子序列的方法:
- 什么都不选,和为
- 选 ,和为
- 选 ,和为
- 选 ,和为
- 选 ,和为
- 选 ,和为
- 选 ,和为 (由于是 进制,本来要变成 的,但是不进位就只剩下 了)
- 选 ,和为
综上,得到 0,1,2,3,4
的方案数分别是 2,2,1,2,1
。
数据范围和约定
测试点编号 | n | k | m | 总分数 |
---|---|---|---|---|
#1 | ||||
#2 | ||||
#3~4 | ||||
#5 | ||||
#6~7 | ||||
#8 | ||||
#9 | ||||
#10~11 | ||||
#12~14 |