题库首页 › 青少年软件编程(C语言) › 题目 15130

组合 题目描述 你收集了 n 张卡片,按照收集的时间顺序编号 1 到 n 并依次排列,每张卡片上标有一个数值。现在突发奇想,想知道在这些卡片中,若每次挑选两张卡片,会有多少对不同的组合满足两张卡片的数值和恰好为 0,请你计算出符合条件的卡片组合的数量。 输入格式 · 第一行:单个整数表示 n · 第二行:n 个整数表示 a1,a2,a3,…,an 输出格式 单个整数:表示有多少对卡片数值和为 0。 输入样例 4 2 -2 2 0 输出样例 2 说明提示 · 30%的数据,1≤n≤1000 · 60% 的数据,1≤n≤20000 · 100% 的数据,1≤n≤300000 · -1,000,000,000≤ai≤1,000,000,000 限制 时间限制:1000ms 内存限制:512MiB

正确答案:参考程序(Python):n=int(input());a=list(map(int,input().split()));from collections import Counter;c=Counter(a);ans=0;for x,k in c.items():if x>0:ans+=k*c.get(-x,0);ans+=c[0]*(c[0]-1)//2;print(ans)。样例2 -2 2 0→2。核心:和为0配对计数。

试卷来源:202506 青少年等级考试C/C++真题五级

本卷相关题目

在线做题 同科目题库