破解密码
from:Starzxy
这都是vfk出的QAQ你萌别打我
算法一
暴力枚举每一位的字母,判段Hash值是否相等,时间复杂度$O(26^n)$。可以获得20分。
算法二
用高斯消元消元就好啦,时间复杂度$O(n^3)$。可以获得50分。
算法三
对于每一个$a_i$,把它变为$a_{i+1}$就是把$a_i$的首字母移到最后一位,对应的,设$a_i$首字母为$c$,$h_{i+1}=((h_i - 26^{n-1}\mathrm{num}(c))\times 26+\mathrm{num}(c))\bmod p$。对于每一位,我们枚举$c$,因为$p$是大于$26$的质数,且数据保证有解,可以确定每一位有且仅有$1$个小写字母满足。