CF1081H Palindromic Magic
题目描述
在学习了一些关于回文串的有趣算法后,Chouti 发现回文串非常有趣,于是他想用这个问题来挑战你。
Chouti 有两个字符串 $A$ 和 $B$。由于他喜欢[回文串](https://en.wikipedia.org/wiki/Palindrome),他想从 $A$ 中选取一个非空回文子串 $a$,从 $B$ 中选取一个非空回文子串 $b$。将它们拼接起来,他会得到字符串 $ab$。
Chouti 认为通过这种方式得到的字符串都很有趣,所以他想知道他能得到多少个不同的字符串。
输入格式
第一行包含一个字符串 $A$($1 \le |A| \le 2 \cdot 10^5$)。
第二行包含一个字符串 $B$($1 \le |B| \le 2 \cdot 10^5$)。
字符串 $A$ 和 $B$ 仅包含小写英文字母。
输出格式
输出一行,一个整数,表示可能得到的不同字符串的数量。
说明/提示
在第一个样例中,可以得到的字符串有:
- "a" + "a" = "aa",
- "aa" + "a" = "aaa",
- "aa" + "aba" = "aaaba",
- "aa" + "b" = "aab",
- "a" + "aba" = "aaba",
- "a" + "b" = "ab"。
在第二个样例中,可以得到的字符串有 "aa"、"aaa"、"aaaa"、"aaaba"、"aab"、"aaba"、"ab"、"abaa"、"abaaa"、"abaaba"、"abab"、"ba"、"baa"、"baba"、"bb"。
注意,虽然 "a"+"aa"="aa"+"a"="aaa",但 "aaa" 只会被计数一次。
由 ChatGPT 4.1 翻译