Banner Home Page DIY Contests Problems Ranklist Status Statistics

循环位移

Time Limit : 4000/2000ms (Java/Other)   Memory Limit : 65536/65536K (Java/Other)
Total Submission(s) : 1   Accepted Submission(s) : 1

Font: Times New Roman | Verdana | Georgia

Font Size:

Problem Description

定义字符串 $ S=S_0+\dots+S_{n-1} $ 循环位移 $ k $ 次为 $ S(k) = S_{k\mod n}+\dots + S_{n-1} + S_0 + \dots + S_{(k-1) \mod n} $。

定义 $ [A] = \set{A(k), k \in \mathbb N}. $

给出 $ T $ 组串 $ A, B $,询问 $B$ 有多少个子串在 $ [A] $ 中。

Input

第一行一个 $T$ 表示输入组数。

接下来每行两个字符串,表示 $A$ 和 $B$,保证 $|A| \leq |B|$。

保证 $\sum |B| \leq 1048576.$,并且字符串均由大写字母组成。

Output

输出 $T$ 行,每行一个数表示答案。

Sample Input

3
AN MANTLEFAN
MVP XPTIJMVPMVP
CJMR JDRCJMRAJMRCJMGC

Sample Output

2
4
5

Hint

第一个样例:M`AN`TLEFAN,MANTLEF`AN`第三个样例:JD`RCJM`RAJMRCJMGC,JDR`CJMR`AJMRCJMGC,JDRCJMRA`JMRC`JMGC,JDRCJMRAJ`MRCJ`MGC,JDRCJMRAJM`RCJM`GC

Source

2024“钉耙编程”中国大学生算法设计超级联赛(1)

Statistic | Submit | Back