[传智杯 #4 决赛] 三元组
题目描述
给定一个长度为 n n n 的数列 a a a,对于一个有序整数三元组 ( i , j , k ) (i, j, k) (i,j,k),若其满足 1 ≤ i ≤ j ≤ k ≤ n 1 \leq i \leq j \leq k \leq n 1≤i≤j≤k≤n 并且 a i + a j = a k a_i +a_j = a_k ai+aj=ak,则我们称这个三元组是「传智的」。
现在请你计算,有多少有序整数三元组是传智的。
输入格式
本题单测试点内有多组测试数据。
输入的第一行是一个整数
T
T
T,表示数据组数。
对于每组数据:
第一行是一个整数,表示数列的长度
n
n
n。
第二行有
n
n
n 个整数,第
i
i
i 个整数表示
a
i
a_i
ai。
输出格式
对于每组数据,输出一行一个整数表示答案。
样例 #1
样例输入 #1
2
3
1 2 3
5
1 2 3 4 5
样例输出 #1
2
6
提示说明
样例 1 解释
对于第一组数据,因为
a
1
+
a
1
=
a
2
a_1 + a_1 = a_2
a1+a1=a2,
a
1
+
a
2
=
a
3
a_1 + a_2 = a_3
a1+a2=a3,故共
(
1
,
1
,
2
)
(1, 1, 2)
(1,1,2) 和
(
1
,
2
,
3
)
(1, 2, 3)
(1,2,3) 两个三元组。
对于第二组数据六个三元组分别是:
- ( 1 , 1 , 2 ) (1, 1, 2) (1,1,2)
- ( 1 , 2 , 3 ) (1, 2, 3) (1,2,3)
- ( 1 , 3 , 4 ) (1, 3, 4) (1,3,4)
- ( 1 , 4 , 5 ) (1, 4, 5) (1,4,5)
- ( 2 , 2 , 4 ) (2, 2, 4) (2,2,4)
- ( 2 , 3 , 5 ) (2, 3, 5) (2,3,5)
数据规模与约定
对于全部测试点,保证 1 ≤ T ≤ 100 1 \leq T \leq 100 1≤T≤100, 1 ≤ n , a i ≤ 100 1 \leq n , a_i \leq 100 1≤n,ai≤100,且各个测试点的 n n n 之和不超过 100 100 100,即 ∑ n ≤ 100 \sum n \leq 100 ∑n≤100。
代码内容
//#include <iostream>
//#include <algorithm>
//#include <string>
//#include <cmath>
//#include <ctime>
#include <bits/stdc++.h>
using namespace std;
int main()
{
int T,t;
cin>>T;
int n,i,j,k;
for(t=0;t<T;t++)
{
cin>>n;
int arr[n];
int index=0;
for(i=0;i<n;i++)
cin>>arr[i];
for(i=0;i<n;i++)
for(j=i;j<n;j++)
for(k=j;k<n;k++)
{
if(arr[i]+arr[j]==arr[k])
index++;
}
cout<<index<<endl;
}
return 0;
}