#J20021. 好的子数组

好的子数组

题目描述

给定一个由 00 到 99 的整数组成的数组 a1,a2,…,ana_1, a_2, \dots, a_n。

如果一个子数组 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)—— 数组 aa 的长度。
  • 第二行包含一个长度为 nn 的数字字符串,其中第 ii 个字符表示 aia_i 的值。

输出格式

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

样例输入 1

3
3
120
5
11011
6
600005

样例输出 1

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}(元素依次为 0,0,0,0,50, 0, 0, 0, 5,其和为 55,子数组长度也为 55)。

数据范围

  • 对于所有测试点,保证 1≤t≤10001 \le t \le 1000。
  • 对于每个测试用例,保证 1≤n≤1051 \le n \le 10^5。
  • 保证同一测试点内所有测试用例的 nn 之和不超过 10510^5。
  • 保证给定的字符串仅由数字 0 到 9 组成。