时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 512 M,其他语言1024 M
64bit IO Format: %lld
题目描述
Auggie 非常喜欢说差不多,而 Crazycth 非常喜欢说得了,于是他们在一起玩时经常发出差不多得了的声音。
对于一个由正整数组成的数组

,定义

为

数组所有元素之和,即

。Auggie 会将数组中的一些数取出并按原来顺序拼接成一个新的子数组

,即

是

的一个子序列,而一个数组的子序列被称为差不多得了的当且仅当它的所有元素之和等于

。
Crazycth 想知道数组

有多少种本质不同的差不多得了的

。你能帮他解答吗?
对于数组

与

,它们是本质不同的当且仅当它们长度不同或存在

使得

。
输入描述:
第一行包含一个整数
,表示测试数据的组数。对于每组数据:
第一行包含一个整数
,表示数组元素的个数。
第二行包含
个整数
,表示数组的每个元素。
输出描述:
对于每组数据,在一行输出一个整数表示有多少种本质不同的差不多得了的数组
的数量。
示例1
输入
复制
3
3
1 2 3
2
100 4
5
3 4 2 1 1
备注:
子数列,又称子序列,在数学中,某个序列的子序列是从最初序列通过去除某些元素但不破坏余下元素的相对位置(在前或在后)而形成的新序列,如空数组,
和
是
的子序列, 而
不是。