题目背景
Mirko 正在研究一个哈希函数。
题目描述
此哈希函数如此定义:
- f(NULL)=0
- f(ai+si)=((f(si)×33)xor ord(ai))modMOD
其中 ai 代表一个字符,si 代表一个字符串,均由小写字母组成。
- xor 代表按位异或算符。
- ord(letter) 代表字母中字母的序数(如:ord(a)=1,ord(z)=26)。
MOD 是 2m 形式的整数。
当 m=10 时,哈希函数的一些值如下:
- f(a)=1
- f(aa)=32
- f(kit)=438
请问有多少个单词的哈希值为 k 且长度为 n?
输入格式
输入一行,包含三个整数 n,k 和 m。
输出格式
输出一行,哈希值为 k 且长度为 n 的单词个数。
提示
【样例解释】
样例 1 解释
字母表中的所有字符的 ord 值均不为 0。
样例 2 解释
单词b
。
样例 3 解释
词语为dxl
,hph
,lxd
和 xpx
。
【数据规模与约定】
1≤n≤10,0≤k<2m,6≤m≤25。
【说明】
题目译自 COCI2013-2014 CONTEST #6 T5 HASH。