#4283. [USACO14FEB] Secret Code B

    ID: 4283 传统题 1000ms 256MiB 尝试: 0 已通过: 0 难度: (无) 上传者: 标签>USACO2014FEB铜组分治字符串处理普及+/提高-

[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 种不同方式:

  1. AB 开始 → AB 执行操作(缩短并拼接)得到 AB+ABA(具体步骤:比如先缩短 ABB,原串 AB 拼到开头 → AB + B?可能需结合操作逻辑重新梳理,示例给的是流程:ABAB+ABA 这类 )
  2. ABA 开始 → ABA+BA
  3. AB 开始 → AB+ABAABA+BA(多次操作 )
  4. AB 开始 → AB+ABAAB+ABA(可能不同操作路径 )
  5. BA 开始 → BA+ABAAB+ABA
  6. BA 开始 → BA+ABAABA+BA

(注:实际需严格按“缩短 + 拼接”的操作规则推导,示例是官方给出的可能路径说明 。)