题号:NC208618
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld
题目描述
众所周知抓包(packet capture)就是将网络传输发送与接收的数据包进行截获、重发、编辑、转存等操作,也用来检查网络安全。抓包也经常被用来进行数据截取等。
现在你正在检测T(

)个随机加密服务器,随机加密服务器有一个密钥长度为K(

),只由大写字母’A‘~'Z'组成,且每个字符在密钥中只出现一次。服务器只提供一个服务:输入一个K进制数x(我们不妨称之为加密数字),随机在[1,x]生成一个K进制数并且加密的返回。加密规则是:对于K进制数中的某一位为x,用密钥中的第x个字符替代。例如当加密密钥为CODE,加密数字为1230(十进制数),加密字符串为ODEC。
现在你抓包到了

个加密数字(保证加密数字为随机生成)和加密字符串(保证加密数字小于十进制下的

或者加密数字等于-1),但是由于某种不明的技术原因部分加密数字损坏了显示成了-1,求是否能求出密钥。如果能求出则输出密钥,不能则输出-1。
输入描述:
第一行一个数T,表示有T个加密服务器。
对于每组数据,接下来一行一个数K,表示密钥长度。
接下来
行,每行包括一个k进制数表示加密数字(加密数字如包含字符,均为小写字符),或者-1表示加密 数字损坏。接着一个字符串表示加密字符。
输出描述:
对于每个服务器输出"Case #x: y",x表示这是第几个服务器,y表示答案,一个表示密钥的字符串,或者-1。
示例1
输入
复制
<a href="http://nowcoder.oss-cn-hangzhou.aliyuncs.com/files/20200702/sample.in">下载链接</a>
输出
复制
<a href="http://nowcoder.oss-cn-hangzhou.aliyuncs.com/files/20200702/sample.out">下载链接</a>
备注:
由于输入输出文件过大,将以文件的形式下发。
文件读写可以尝试使用freopen函数,参考资料:https://oi-wiki.org/lang/file-op/