[ABC295D] Three Days Ago
题意翻译
给出一个数字串,问有多少子段满足,可以以某种方式将这个子段重排,将子段分成两个完全相同的部分。
题目描述
[problemUrl]: https://atcoder.jp/contests/abc295/tasks/abc295_d
`20230322` は並べ替えると `02320232` となり、これは `0232` を $ 2 $ 度繰り返しています。
このように、数字のみからなる文字列であって、適切に文字を並び替える (そのままでもよい) ことによって同じ列を $ 2 $ 度繰り返すようにできるものを **嬉しい列** と呼びます。
数字のみからなる文字列 $ S $ が与えられるので、以下の条件を全て満たす整数の組 $ (l,r) $ はいくつあるか求めてください。
- $ 1\ \le\ l\ \le\ r\ \le\ |S| $ ( $ |S| $ は $ S $ の長さ)
- $ S $ の $ l $ 文字目から $ r $ 文字目までの (連続する) 部分文字列は嬉しい列である。
输入输出格式
输入格式
入力は以下の形式で標準入力から与えられる。
> $ S $
输出格式
答えを整数として出力せよ。
输入输出样例
输入样例 #1
20230322
输出样例 #1
4
输入样例 #2
0112223333444445555556666666777777778888888889999999999
输出样例 #2
185
输入样例 #3
3141592653589793238462643383279502884197169399375105820974944
输出样例 #3
9
说明
### 制約
- $ S $ は数字のみからなる長さ $ 1 $ 以上 $ 5\ \times\ 10^5 $ 以下の文字列
### Sample Explanation 1
$ S= $ `20230322` です。 条件を満たす整数組 $ (l,r) $ は $ (1,6),(1,8),(2,7),(7,8) $ の $ 4 $ つです。
### Sample Explanation 2
$ S $ の先頭が `0` である場合もあります。