[ABC135F] Strings of Eternity
题意翻译
给两个字符串$s$和$t$,记符号$str * x$表示字符串$str$重复$x$次。
定义一个正整数$k$合法,当且仅当满足:存在一个正整数 $j$ ,使得$t* k $是 $s* j$ 的子串
找到最大的合法正整数 $k$,或者判断可以取到无穷大。
|?|,|?|≤500,000
题目描述
[problemUrl]: https://atcoder.jp/contests/abc135/tasks/abc135_f
英小文字からなる二つの文字列 $ s,\ t $ が与えられます。次の条件を満たす非負整数 $ i $ の個数が有限であるか判定し、有限である場合はそのような $ i $ の最大値を求めてください。
- ある非負整数 $ j $ が存在し、$ t $ を $ i $ 個連結して得られる文字列は、$ s $ を $ j $ 個連結して得られる文字列の部分文字列である。
输入输出格式
输入格式
入力は以下の形式で標準入力から与えられる。
> $ s $ $ t $
输出格式
条件を満たす非負整数 $ i $ の個数が有限である場合はそのような $ i $ の最大値を、無限である場合は `-1` を出力せよ。
输入输出样例
输入样例 #1
abcabab
ab
输出样例 #1
3
输入样例 #2
aa
aaaaaaa
输出样例 #2
-1
输入样例 #3
aba
baaab
输出样例 #3
0
说明
### 注記
- 文字列 $ a $ が文字列 $ b $ の部分文字列であるとは、ある整数 $ x $ $ (0\ \leq\ x\ \leq\ |b|\ -\ |a|) $ が存在して任意の整数 $ y $ $ (1\ \leq\ y\ \leq\ |a|) $ に対して $ a_y\ =\ b_{x+y} $ であることです。
- 任意の文字列に対し、それを $ 0 $ 個連結して得られる文字列は空文字列であるとします。また、上記の定義より、空文字列は任意の文字列の部分文字列です。したがって、任意の二つの文字列 $ s,\ t $ に対して $ i\ =\ 0 $ は問題文中の条件を満たします。
### 制約
- $ 1\ \leq\ |s|\ \leq\ 5\ \times\ 10^5 $
- $ 1\ \leq\ |t|\ \leq\ 5\ \times\ 10^5 $
- $ s,\ t $ は英小文字からなる。
### Sample Explanation 1
$ t $ を $ 3 $ 個連結して得られる文字列 `ababab` は、$ s $ を $ 2 $ 個連結して得られる文字列 `abcabababcabab` の部分文字列であるため、$ i\ =\ 3 $ は条件を満たします。 一方で、$ t $ を $ 4 $ 個連結して得られる文字列 `abababab` は、$ s $ を何個連結しても部分文字列として現れないため、$ i\ =\ 4 $ は条件を満たしません。 同様に、$ 5 $ 以上の任意の整数も条件を満たしません。よって条件を満たす非負整数 $ i $ の個数は有限で、その最大値は $ 3 $ です。
### Sample Explanation 2
任意の非負整数 $ i $ に対し、$ t $ を $ i $ 個連結して得られる文字列は、$ s $ を $ 4i $ 個連結して得られる文字列の部分文字列です。したがって条件を満たす非負整数 $ i $ は無限に存在します。
### Sample Explanation 3
注記で述べたように、$ i\ =\ 0 $ は必ず条件を満たします。