#CF1398C. 好子数组 / Good Subarrays

好子数组 / Good Subarrays

题目描述

给定数组 a1,a2,…,ana_1,a_2,\dots,a_n,数组每个元素取值为 00 到 99。 如果一段子数组 al,al+1,…,ara_l,a_{l+1},\dots,a_r 满足子数组元素之和等于子数组的长度,即

∑i=lrai=r−l+1\sum_{i=l}^{r} a_i = r-l+1

就称该子数组为“好子数组”。

例如数组 a=[1,2,0]a=[1,2,0],一共有 33 个好子数组:a1…1=[1]a_{1\dots1}=[1]、a2…3=[2,0]a_{2\dots3}=[2,0]、a1…3=[1,2,0]a_{1\dots3}=[1,2,0]。

请计算数组 aa 中好子数组的总数量。

输入

第一行一个整数 tt(1≤t≤10001 \le t \le 1000),代表测试用例组数。

每组测试用例: 第一行输入整数 nn(1≤n≤1051 \le n \le 10^5),代表数组长度。 第二行给出长度为 nn 的数字字符串,字符串第 ii 位字符对应 aia_i 的数值。

输出

对每组测试用例输出一个整数,表示该数组中好子数组的数量。

样例

3
3
120
5
11011
6
600005
3
6
1

说明

第一组样例就是题目描述举例,共 33 个好子数组。

第二组样例共有 66 个好子数组:a1…1a_{1\dots1}、a2…2a_{2\dots2}、a1…2a_{1\dots2}、a4…4a_{4\dots4}、a5…5a_{5\dots5}、a4…5a_{4\dots5}。

第三组样例仅有 11 个好子数组:a2…6a_{2\dots6}。

数据范围

对于所有数据,1≤t≤10001 \le t \le 1000,1≤n≤1051 \le n \le 10^5,0≤ai≤90 \le a_i \le 9

保证全部测试用例的 nn 之和不超过 10510^5。

子任务 分值 限制
1 2020 n,t≤100n,t \le 100
2 n,t≤5000n,t \le 5000
3 3030 aia_i 都为正整数
4 无特殊限制

原题链接

原题链接