#624. 直角三角形

    ID: 624 传统题 文件IO:triangle 1000ms 256MiB 尝试: 4 已通过: 1 难度: 普及− 上传者: 标签>基础算法枚举合肥市经开区区赛2022

直角三角形

本题需要文件读写

文件 IO 为:输入文件 triangle.in,输出文件 triangle.out。请使用上述文件名读入和输出。

题目描述

国豪和国庆很喜欢数学,他们很早就自学了三角形的相关知识。

三角形的三边长分别用 aa、bb、cc 三个字母表示,如果这三边的边长满足如下关系:a2+b2=c2a^2+b^2=c^2,则说明它们构成了一个直角三角形,且 aa 和 bb 为直角边,cc 为斜边。现给出 nn 条边的边长,请你从中选出三条边,让它们能构成一个直角三角形,请问一共能构成多少个直角三角形。

输入格式

共两行。第一行,一个整数 nn,表示有 nn 条边。第二行 nn 个正整数,表示每条边的长度。

输出格式

共一行,一个整数,表示能构成的直角三角形的个数。

样例输入

7
4 3 4 1 3 5 4

样例输出

6

样例解释

a2a^2 读 aa 的平方,表示有 22 个 aa 相乘,即 a×aa×a。

对于样例输入,可以从 77 条边中选出边长为 33、44、55 的三条边,因为 32+42=523^2+4^2=5^2,所以这三条边能构成一个直角三角形,又因为 33 出现了 22 次,44 出现了 33 次,所以一共能构成 2×3=62\times 3=6 个直角三角形。

数据范围

  • 3≤n≤1000003\le n\le 100000
  • 1≤1\le每条边的长度≤1000\le 1000