atcoder#ABC135F. [ABC135F] Strings of Eternity

[ABC135F] Strings of Eternity

题目描述

英小文字からなる二つの文字列 s, t s,\ t が与えられます。次の条件を満たす非負整数 i i の個数が有限であるか判定し、有限である場合はそのような i i の最大値を求めてください。

  • ある非負整数 j j が存在し、t t i i 個連結して得られる文字列は、s s j j 個連結して得られる文字列の部分文字列である。

输入格式

入力は以下の形式で標準入力から与えられる。

s s t t

输出格式

条件を満たす非負整数 i i の個数が有限である場合はそのような i i の最大値を、無限である場合は -1 を出力せよ。

题目大意

给两个字符串sstt,记符号strxstr * x表示字符串strstr重复xx次。 定义一个正整数kk合法,当且仅当满足:存在一个正整数 jj ,使得tkt* k sjs* j 的子串 找到最大的合法正整数 kk,或者判断可以取到无穷大。 |?|,|?|≤500,000

abcabab
ab
3
aa
aaaaaaa
-1
aba
baaab
0

提示

注記

  • 文字列 a a が文字列 b b の部分文字列であるとは、ある整数 x x (0  x  b  a) (0\ \leq\ x\ \leq\ |b|\ -\ |a|) が存在して任意の整数 y y (1  y  a) (1\ \leq\ y\ \leq\ |a|) に対して ay = bx+y a_y\ =\ b_{x+y} であることです。
  • 任意の文字列に対し、それを 0 0 個連結して得られる文字列は空文字列であるとします。また、上記の定義より、空文字列は任意の文字列の部分文字列です。したがって、任意の二つの文字列 s, t s,\ t に対して i = 0 i\ =\ 0 は問題文中の条件を満たします。

制約

  • 1  s  5 × 105 1\ \leq\ |s|\ \leq\ 5\ \times\ 10^5
  • 1  t  5 × 105 1\ \leq\ |t|\ \leq\ 5\ \times\ 10^5
  • s, t s,\ t は英小文字からなる。

Sample Explanation 1

t t 3 3 個連結して得られる文字列 ababab は、s s 2 2 個連結して得られる文字列 abcabababcabab の部分文字列であるため、i = 3 i\ =\ 3 は条件を満たします。 一方で、t t 4 4 個連結して得られる文字列 abababab は、s s を何個連結しても部分文字列として現れないため、i = 4 i\ =\ 4 は条件を満たしません。 同様に、5 5 以上の任意の整数も条件を満たしません。よって条件を満たす非負整数 i i の個数は有限で、その最大値は 3 3 です。

Sample Explanation 2

任意の非負整数 i i に対し、t t i i 個連結して得られる文字列は、s s 4i 4i 個連結して得られる文字列の部分文字列です。したがって条件を満たす非負整数 i i は無限に存在します。

Sample Explanation 3

注記で述べたように、i = 0 i\ =\ 0 は必ず条件を満たします。