P6871 [COCI 2013/2014 #6] HASH
题目背景
Mirko 正在研究一个哈希函数。
题目描述
此哈希函数如此定义:
- $f(\rm{NULL})=0$
- $f(a_i+s_i)=((f(s_i)\times33)\operatorname{xor}\ \operatorname{ord}(a_i))\bmod MOD$
其中 $a_i$ 代表一个字符,$s_i$ 代表一个字符串,均由小写字母组成。
- $\operatorname{xor}$ 代表按位异或算符。
- $\operatorname{ord(letter)}$ 代表字母中字母的序数(如:$\operatorname{ord(a)=1}$,$\operatorname{ord(z)= 26}$)。
$MOD$ 是 $2^m$ 形式的整数。
当 $m=10$ 时,哈希函数的一些值如下:
- $f(\texttt{a})=1$
- $f(\texttt{aa})=32$
- $f(\texttt{kit})=438$
请问有多少个单词的哈希值为 $k$ 且长度为 $n$?
输入格式
输入一行,包含三个整数 $n$,$k$ 和 $m$。
输出格式
输出一行,哈希值为 $k$ 且长度为 $n$ 的单词个数。
说明/提示
#### 【样例解释】
#### 样例 1 解释
字母表中的所有字符的 $\text{ord}$ 值均不为 $0$。
#### 样例 2 解释
单词`b`。
#### 样例 3 解释
词语为`dxl`,`hph`,`lxd` 和 `xpx`。
#### 【数据规模与约定】
$1\le n\le 10$,$0\le k