CF1398C Good Subarrays

题目描述

有一个数组$a_1,a_2,\dots,a_n$,满足$\forall i \in[1,n]$ 有 $0 \le a_i \le 9$。 我们称一个子数组 $a_l,a_{l+1},a_{l+2},\dots,a_{r-1},a_r$ 是“好”的,当且仅当这个子数组中所有元素的和等于它的长度(即 $\sum_{i=l}^r a_i = r-l+1$ )。 现在要你计算出数组 $a$ 中所有“好”的子数组的数量。

输入格式

第一行,一个数 $t$ ,表示数据组数。 接下来 $2\times t$ 行,每两行代表一组数据: - 第一行,一个整数 $n$ ,表示 $a$ 数组的长度; - 接下来一行,一个长度为 $n$ 的由数字组成的字符串,其中第 $i$ 个数字的值是 $a_i$ 的值。

输出格式

对于每组数据,输出 $a$ 数组中“好”的子数组的数量。

说明/提示

### 样例解释 第一组数据中, $a_{1\dots1},a_{2\dots3},a_{1\dots3}$ 是原数组的“好”子数组; 第二组数据中, $a_{1\dots1},a_{2\dots2},a_{1\dots2},a_{4\dots4},a_{5\dots5},a_{4\dots5}$ 这$6$个子数组是原数组的“好”子数组; 第三组数据中,只有 $a_{2\dots6}$ 是原数组的“好”子数组。 $1\le t\le 1000,1\le n\le 10^5,1\le \sum n \le 10^5$