首页 > 其他分享 >P8196 [传智杯 #4 决赛] 三元组 ----- 数组与vector

P8196 [传智杯 #4 决赛] 三元组 ----- 数组与vector

时间:2022-11-20 21:01:47浏览次数:41  
标签:传智杯 int cin 三元组 leq vector vec include

题目描述

给定一个长度为 nn 的数列 aa,对于一个有序整数三元组 (i, j, k)(i,j,k),若其满足 1 \leq i \leq j \leq k \leq n1≤i≤j≤k≤n 并且 a_i +a_j = a_kai​+aj​=ak​,则我们称这个三元组是「传智的」。

现在请你计算,有多少有序整数三元组是传智的。

输入格式

本题单测试点内有多组测试数据。

输入的第一行是一个整数 TT,表示数据组数。

对于每组数据:

第一行是一个整数,表示数列的长度 nn。
第二行有 nn 个整数,第 ii 个整数表示 a_iai​。

输出格式

对于每组数据,输出一行一个整数表示答案。

输入输出样例

输入 #1
2
3
1 2 3
5
1 2 3 4 5
输出 #1
2
6

说明/提示

样例 1 解释

对于第一组数据,因为 a_1 + a_1 = a_2a1​+a1​=a2​,a_1 + a_2 = a_3a1​+a2​=a3​,故共 (1, 1, 2)(1,1,2) 和 (1, 2, 3)(1,2,3) 两个三元组。
对于第二组数据六个三元组分别是:

  • (1, 1, 2)(1,1,2)
  • (1, 2, 3)(1,2,3)
  • (1, 3, 4)(1,3,4)
  • (1, 4, 5)(1,4,5)
  • (2, 2, 4)(2,2,4)
  • (2, 3, 5)(2,3,5)

数据规模与约定

对于全部测试点,保证 1 \leq T \leq 1001≤T≤100,1 \leq n , a_i \leq 1001≤n,ai​≤100,且各个测试点的 nn 之和不超过 100100,即 \sum n \leq 100∑n≤100。

vector:

#include <iostream>
#include <string>
#include <vector>

using namespace std;
int main() {
    int T;
    cin >> T;
    int n;
    vector<int> vec;
    int a;

    while (T--) {
        int count = 0;
        cin >> n;
        for (int i = 0; i < n; ++i) {
            cin >> a;
            vec.emplace_back(a);
        }
        //for (auto&& ve : vec) cout << ve << "/ ";

        for (int z = 0; z < n; ++z) {
            for (int i = z; i < n; ++i) {
                for (int j = i; j < n; ++j) {
                    if (vec[z] + vec[i] == vec[j]) {
                        count++;
                    }
                }
            }
        }
        cout << count << endl;
        vec.clear();
    }
    return 0;
}

数组:

#include <iostream>
#include <string>
#include <vector>

using namespace std;
int main() {
    int T;
    cin >> T;
    int n;
    int vec[105];
    int a;

    while (T--) {
        int count = 0;
        cin >> n;
        for (int i = 1; i <= n; i++) cin >> vec[i];

        for (int z = 1; z <= n; ++z) 
            for (int i = z; i <= n; ++i) 
                for (int j = i; j <= n; ++j) 
                    if (vec[z] + vec[i] == vec[j]) 
                        count++;

        cout << count << endl;
    }
    return 0;
}

 

标签:传智杯,int,cin,三元组,leq,vector,vec,include
From: https://www.cnblogs.com/slowlydance2me/p/16909514.html

相关文章