#4283. [USACO14FEB] Secret Code B
[USACO14FEB] Secret Code B
USACO2014FEB 铜组第三题
题目描述
农夫约翰(Farmer John)有一条想对他的牛保密的秘密消息,这条消息是一个长度至少为 2、仅包含字符 A..Z 的字符串。
为了加密这条消息,FJ 对其应用了一系列“操作”。每个操作的执行方式是:先对字符串 S 进行缩短(移除其第一个字符 或者 最后一个字符),然后将原始的 S 附加到缩短后的字符串的开头 或者 结尾。例如,对字符串 ABCD 执行一次操作,可能得到以下四种可能的字符串:
ABCDABCD(移除第一个字符?不,原例逻辑是先缩短再拼接,正确示例看下面说明 )
原示例解释:对ABCD执行操作,先缩短(比如移除第一个字符得到BCD,然后把原ABCD拼到开头 →ABCDBCD;或移除第一个字符后拼到结尾 →BCDABCD;同理移除最后一个字符得到ABC,拼开头 →ABCDABC,拼结尾 →ABCABCD,所以示例里说对ABCD执行一次操作可得到四个可能字符串:ABCDABCD实际应为上述四种情况里的,可能原文示例描述简化了,核心是“缩短 + 原串拼前后”的操作逻辑 )。
给定最终的加密字符串,请计算 FJ 可能通过对某个长度至少为 2 的源字符串,执行一次或多次连续操作得到该加密字符串的不同方式的数量。即使不同操作得到相同的加密字符串,这些操作也视为不同的方式。例如,从 AA 得到 AAA 有四种不同的操作方式,对应上述四种基本操作(移除首/尾字符后,原串拼首/尾 )。
输入格式
- 第 1 行:一个长度最多为 100 的字符串。
样例输入
ABABA
输出格式
输出 1 行,表示 FJ 通过对某个长度至少为 2 的源字符串执行一次或多次连续操作,得到该加密字符串的不同方式的数量。如果没有这样的方式,输出 0。
样例输出(文件 scode.out)
6
输出详情
以下是得到 ABABA 的 6 种不同方式:
- 从
AB开始 →AB执行操作(缩短并拼接)得到AB+ABA(具体步骤:比如先缩短AB为B,原串AB拼到开头 →AB+B?可能需结合操作逻辑重新梳理,示例给的是流程:AB→AB+ABA这类 ) - 从
ABA开始 →ABA+BA - 从
AB开始 →AB+ABA→ABA+BA(多次操作 ) - 从
AB开始 →AB+ABA→AB+ABA(可能不同操作路径 ) - 从
BA开始 →BA+ABA→AB+ABA - 从
BA开始 →BA+ABA→ABA+BA
(注:实际需严格按“缩短 + 拼接”的操作规则推导,示例是官方给出的可能路径说明 。)