CF895C Square Subsets

题目描述

Petya 也因为上课迟到受到了惩罚。老师给了他一个额外任务。对于某个数组 $a$,Petya 需要找出有多少种不同的方法选择非空子集,使得所选元素的乘积等于某个整数的平方。 如果两种选择方法所选元素的下标集合不同,则认为是不同的方法。 由于答案可能非常大,你需要输出答案对 $10^9+7$ 取模后的结果。

输入格式

第一行包含一个整数 $n$($1 \le n \le 10^5$),表示数组的元素个数。 第二行包含 $n$ 个整数 $a_i$($1 \le a_i \le 70$),表示数组的元素。

输出格式

输出一个整数,表示选择若干元素使得乘积为完全平方数的不同方法数(对 $10^9+7$ 取模)。

说明/提示

在第一个样例中,无论怎样选择元素,所有元素的乘积都是 $1$,而 $1 = 1^2$。因此答案为 $2^{4}-1=15$。 在第二个样例中,有六种不同的方法可以选择元素,使得它们的乘积为 $4$,只有一种方法使乘积为 $16$。因此答案为 $6+1=7$。 由 ChatGPT 5 翻译