#D1016. 乘积平方

乘积平方

题目描述

33DAI 有 nn 个正整数 a1,a2,…,ana_1, a_2, \dots, a_n。

他想知道:有多少对 (i,j)(i, j) 满足 1≤i<j≤n1 \le i < j \le n,且 ai×aja_i \times a_j 是完全平方数?

输入格式

第一行一个整数 nn。

第二行 nn 个整数 a1,a2,…,ana_1, a_2, \dots, a_n,相邻两个整数之间用一个空格隔开。

输出格式

输出一行一个整数,表示满足条件的数对个数。

4
1 2 8 18
3

样例 1 解释

满足条件的数对有:

  • 2×8=16=422 \times 8 = 16 = 4^2;
  • 2×18=36=622 \times 18 = 36 = 6^2;
  • 8×18=144=1228 \times 18 = 144 = 12^2。

11 与其它数的乘积都不是完全平方数,所以答案是 33。

6
12 3 27 4 9 2
4

样例 2 解释

满足条件的数对有:

  • 12×3=36=6212 \times 3 = 36 = 6^2;
  • 12×27=324=18212 \times 27 = 324 = 18^2;
  • 3×27=81=923 \times 27 = 81 = 9^2;
  • 4×9=36=624 \times 9 = 36 = 6^2。

其余数对的乘积都不是完全平方数,所以答案是 44。

样例 3

见 pairsq3.in 与 pairsq3.ans。

样例 4

见 pairsq4.in 与 pairsq4.ans。

数据范围

对于全部测试数据,保证:

  • 1≤n≤2×1051 \le n \le 2 \times 10^5;
  • 1≤ai≤1071 \le a_i \le 10^7。

子任务

本题共 20 个测试点,按测试点计分:

测试点 分值 每个测试点 特殊限制
1∼61 \sim 6 3030 55 n≤20n \le 20 且 ai≤100a_i \le 100
7∼127 \sim 12 n≤5000n \le 5000 且 ai≤106a_i \le 10^6
13∼2013 \sim 20 4040 无额外限制

每个测试点单独评分,全部测试点的得分之和即为本题得分。