题目背景
我用烟花宣告,用挥手告别,用鞠躬感谢,过去的都已经过去,接下来的路我要悠闲地走,愉悦地走,脚步如同时间不会停止,下一年,我们还会再会。
题目描述
这次的题目背景和 luanmenglei 没有一点关系。
给定 n,k,p,求有多少有序 p 元组 (a1,a2,⋯,ap) 满足
-
∀i∈[1,p],ai∈[1,n]。
-
∀i∈[1,p),popcount(ai⊕ai+1)=k。
-
∀i,j∈[1,p],i=j,ai=aj。
答案对 998244353 取模。
- 其中 popcount(x) 表示 x 在二进制表达下 1 的个数。
- ⊕ 表示按位异或操作。
- 两个有序 p 元组 (a1,a2,…,ap),(b1,b2,…,bp) 不同当且仅当存在 i∈[1,p] 使得 ai=bi。
输入格式
一行三个正整数 n,k,p。
输出格式
一行一个数,表示答案。
5 1 2
8
6 1 3
12
7 1 4
48
8 3 5
6
9 2 5
72
114 3 3
106624
514 3 4
296097032
1000 7 5
569405945
1000 7 1
1000
提示
对于所有测试数据,保证 1≤n≤1000,1≤k≤⌊log2n⌋,1≤p≤5。
每个测试点的具体限制见下表:
测试点编号 |
n≤ |
p= |
1 |
1000 |
1 |
2∼3 |
2 |
4∼5 |
300 |
3 |
6∼12 |
1000 |
13∼15 |
4 |
16∼21 |
300 |
5 |
22∼25 |
1000 |