#1015. 好的子数组

好的子数组

题目描述

给定一个由 0099 的整数组成的数组 a1,a2,,ana_1, a_2, \dots, a_n

如果一个子数组 al,al+1,,ara_l, a_{l+1}, \dots, a_r 的元素之和等于该子数组的长度(即 i=lrai=rl+1\sum_{i=l}^r a_i = r - l + 1),我们称其为好子数组

例如,如果 a=[1,2,0]a = [1, 2, 0],那么共有 33好子数组a11=[1]a_{1\dots1} = [1]a23=[2,0]a_{2\dots3} = [2, 0] 以及 a13=[1,2,0]a_{1\dots3} = [1, 2, 0]

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

输入格式

第一行包含一个整数 tt1t10001 \le t \le 1000)—— 测试用例的数量。

对于每个测试用例:

  • 第一行包含一个整数 nn1n1051 \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好子数组a11a_{1\dots1}a22a_{2\dots2}a12a_{1\dots2}a44a_{4\dots4}a55a_{5\dots5}a45a_{4\dots5}
  • 在第三个测试用例中,只有 11好子数组a26a_{2\dots6}(元素依次为 0,0,0,0,50, 0, 0, 0, 5,其和为 55,子数组长度也为 55)。

数据范围

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