#jreson. 2026暑假CSP-J模拟赛05-T2 程老师的共鸣对

2026暑假CSP-J模拟赛05-T2 程老师的共鸣对

【文件读写】本题使用文件读写:输入文件 reson.in,输出文件 reson.out

时间限制:1000ms 内存限制:512MB

题目描述

程老师最近迷上了零件组装。他手上有 nn 个零件,每个零件上都标有一个正整数参数,第 ii 个零件的参数为 aia_i

程老师发现,有些零件之间存在一种奇妙的"共鸣"现象。他给出了如下定义:两个零件能够产生共鸣,当且仅当它们的参数乘起来恰好是一个完全平方数。也就是说,把两个零件的参数相乘,得到的结果能够表示成某个正整数的平方。

程老师想知道,在他手上的这 nn 个零件中,一共能找出多少对共鸣的零件。这里"一对"指的是两个不同的零件,且 (i,j)(i, j)(j,i)(j, i) 算作同一对,即只统计满足 i<ji < j 的配对。

由于零件数量可能很多,程老师希望你能高效地帮他算出结果。

输入格式

从文件 reson.in 中读入数据。

第一行一个正整数 nn,表示零件的个数。

第二行 nn 个正整数 a1,a2,,ana_1, a_2, \ldots, a_n,表示每个零件的参数。

输出格式

输出到文件 reson.out 中。

一行一个整数,表示共鸣的零件对数。

数据范围

对于所有测试点,保证:

  • 1n1051 \le n \le 10^5
  • 1ai1061 \le a_i \le 10^6

各测试点的详细限制如下:

测试点 nn \le 特殊性质
1 10
2~4 100
5~8 2000
9~10 10410^4
11~12 10510^5 A
13~14 B
15~20

特殊性质 A:aia_i 只有两种取值。

特殊性质 B:ai100a_i \le 100

样例

样例 1 输入

4
1 2 8 3

样例 1 输出

1

样例 2 输入

3
4 9 2

样例 2 输出

1

样例 3 输入

4
2 8 18 32

样例 3 输出

6

样例解释

对于样例 1,所有可能的配对及其乘积为:(1,2)(1,2)22(1,8)(1,8)88(1,3)(1,3)33(2,8)(2,8)1616(2,3)(2,3)66(8,3)(8,3)2424。其中只有 16=4216 = 4^2 是完全平方数,因此只有一对共鸣。

难度 普及
通过率 22.2%
尝试 9
已通过 2
ID
700
类型
传统题
Time Limit
1000ms
Memory Limit
512MiB
上传者

相关

在下列比赛中:

暑假CSP-J模拟赛 第5场