#t109. 完全平方数

完全平方数

完全平方数

题目描述

原题有对应的选择、判断题,见 https://ti.luogu.com.cn/problemset/1143。

小杨同学有一个包含 nn 个非负整数的序列 AA,他想要知道其中有多少对下标组合 ⟨i,j⟩\langle i,j \rangle(1≤i<j≤n1 \le i < j \le n),使得 Ai+AjA_i + A_j 是完全平方数。

如果 xx 是完全平方数,则存在非负整数 yy 使得 y×y=xy \times y = x。

输入格式

第一行一个非负整数 nn,表示非负整数个数。
第二行包含 nn 个非负整数 A1,A2,…,AnA_1, A_2, \dots, A_n,表示序列 AA 包含的非负整数。

输出格式

输出一行一个整数表示答案。

样例输入

5
1 4 3 3 5

样例输出

3

样例解释

对于样例,序列为 [1,4,3,3,5][1, 4, 3, 3, 5],共有 55 个数。满足 Ai+AjA_i + A_j 是完全平方数的下标组合有:

  • ⟨1,3⟩\langle 1, 3 \rangle:1+3=4=2×21 + 3 = 4 = 2 \times 2,是完全平方数。
  • ⟨1,4⟩\langle 1, 4 \rangle:1+3=41 + 3 = 4,同样是完全平方数(注意序列中有两个 33 位于不同位置)。
  • ⟨2,5⟩\langle 2, 5 \rangle:4+5=9=3×34 + 5 = 9 = 3 \times 3,是完全平方数。

其余组合的和均非完全平方数,因此答案为 33。

数据范围

对全部的测试数据,保证 1≤n≤10001 \le n \le 1000,0≤Ai≤1050 \le A_i \le 10^5。