Oj.Nbdp.Net
初赛题库
问题
状态
排名
团队
题解
课程
Login
问题 5645 --凯撒解密
5645: 凯撒解密
警告!
题目
状态
题解(1)
题目描述
凯撒加密,是一种简单且广为人知的加密技术。需要加密的信息称之为明文,加密后的信息称之为密文。凯撒加密是将明文中的字母都按照一个固定的数量进行偏移,偏移后的结果就是密文,我们也称这个偏移的数量为密钥,密钥值介于 $1$ 至 $25$ 之间。 例如:当密钥为 $3$ 时,表示每个字母往后偏移 $3$ 个位置,即: $a \rightarrow d,b \rightarrow e,c \rightarrow f,\ldots,x \rightarrow a,y \rightarrow b,z \rightarrow c$ 。 - **明文字母:`a b c d e f g h i j k l m n o p q r s t u v w x y z`** - **密文字母:`d e f g h i j k l m n o p q r s t u v w x y z a b c`** 小爱现在得到了一串密文 $s$,密文由一句句子组成,句子中的单词与单词之间由空格隔开,密文句结尾由换行符结束。但是粗心的他忘记了密钥是多少,他只记得原文中一定含有单词 $t$。 请你根据小爱提供的信息,帮他计算出密钥可能的种数与所有可能的密钥值。 --- 例如,小爱得到的密文为: `wow my memory is php code yep`,已知原文中出现了 `iai` 这个单词,则密钥有$2$种可能: - 当密钥为 $7$ 时,原文单词`iai`向后偏移7个字母可以得到`php`,在密文中有出现该单词 - 当密钥为$14$时,原文单词`iai`向后偏移14个字母可以得到`wow`,在密文中有出现该单词 然而,当密钥为$4$时,`iai`向后偏移4个字母得到的`mem`,尽管`mem`是单词`memory`的前缀,但`mem`并不是独立的一整个单词,因此$4$并不是可能的密钥。
输入
输入共两行: 输入第一行:一个字符串$T$,表示加密前的原文中包含单词$T$,字符串$T$为一个单词,字母之间无空格。 输入第二行:一个字符串$S$,表示加密后的密文,单词与单词之间由空格隔开,行末以换行作为结束标志。 **数据保证,输入的密文与原文单词,均仅由小写字母构成,不包含其他字符。**
输出
输出第一行:一个正整数,表示可能的密钥种数。 输出第二行:若干个正整数,表示所有可能的密钥值,按字典序从小到大输出。 注意:若给定数据无法找到可行密钥,则在仅需第一行输出`Error`,无需输出第二行。
样例输入输出
输入#1
复制
iai wow my memory is php code yep
输出#1
复制
2 7 14
输入#2
复制
yacs hello world
输出#2
复制
Error
提示
对于$100\%$的数据,$1 \leq |S| \leq 1000,1 \leq |T| \leq 20$ 式中,$|S|$表示密文字符串长度,$|T|$表示单词字符串长度 样例1说明:样例说明请见题面
发表题解
序号
标题
作者
发表时间
费用
订购数
操作
题目信息
提交
难度
普及/提高-
标签
字符串
点击显示
if ($pr_flag) { ?>
递交数
88
已通过
26
} ;?>
通过率
30%
时间限制
1 秒
内存限制
256 MB
来源
第三届上海市青少年算法竞赛(小学组)
收藏
标签云
模拟
数学与数论
动态规划
贪心
字符串
排序
枚举
数组与串
深搜
高精度
循环结构
递推
递归
二分三分
宽搜
背包
质数
线段树
分治
N进制
图论
队列
最短路
堆
树
并查集
栈
状态压缩
分支结构
几何
博弈论
生成树
顺序结构
离散化
hash表
位运算
单调队列
树状数组
KMP
字典树
二分图
数学期望
AC自动机
树链剖分
差分约束
数位动态规划
函数与过程
网络流
单调栈
前缀和