bzoj#P2327. [HNOI2011] 勾股定理

[HNOI2011] 勾股定理

题目描述

沫沫最近在研究勾股定理。对于两个正整数 AABB,若存在正整数 CC 使得 A2+B2=C2A^2+B^2=C^2,且 AABB 互质,则称 (A,B)(A,B) 为一个互质勾股数对。

有一天,沫沫得到了 NN 根木棍,其长度都是正整数,她准备从中挑选出若干根木棍来玩拼图游戏,为了使拼出的图案有凌乱美,她希望挑选出的木棍中任意两根的长度均不是互质勾股数对。现在,沫沫想知道有多少种满足要求的挑选木棍的方案。由于答案可能很大,你只要输出答案对 109+710^9+7 取模的结果。

输入格式

从文件 input.txt 中读入数据,输入文件第一行是一个正整数 NN,表示共有多少根木棍。

输入文件第二行是用空格隔开的 NN 个正整数 h1,h2,,hNh_1, h_2, \ldots, h_N,其中对 1iN1 \le i \le Nhih_i 表示第 ii 根木棍的长度。

输出格式

输出文件 output.txt 仅包含一个非负整数,表示满足要求的挑选木棍的方案数对 109+710^9+7 取模的结果。

4
5 12 35 5
8

样例说明 1

(5,12)(5,12)(12,35)(12,35) 是互质勾股数对,故满足要求的挑选木棍的方案有 88 种,即:{5}\{5\}{12}\{12\}{35}\{35\}{5}\{5\}{5,35}\{5,35\}{35,5}\{35,5\}{5,5}\{5,5\}{5,35,5}\{5,35,5\}

数据规模与约定

对于 30%30\% 的数据,对任意 1iN1 \le i \le N1hi30001 \le h_i \le 3000
对于另外 30%30\% 的数据,对任意 1iN1 \le i \le N1hi2×1051 \le h_i \le 2\times 10^5
对于剩下 40%40\% 的数据,对任意 1iN1 \le i \le N2×105hi1062\times 10^5 \le h_i \le 10^6
对于 100%100\% 的数据,N106N \le 10^6

提示

没有写明提示

题目来源

没有写明来源(题面来自洛谷)