x
x.cpp/in/out
题目描述
给定一个长度为 n 的正整数序列 {ai}。
将 {1,2,…,n} 划分成两个非空集合 S、T,使得 gcd(∏i∈Sai,∏i∈Tai)=1。
求划分方案数,对 109+7 取模。
输入格式
从文件 x.in 中读入数据。
第一行,一个非负整数 t,代表数据组数。
每组数据的第一行,一个正整数 n。
第二行,n 个正整数,代表 {ai}。
输出格式
输出到文件 x.out 中。
输出 t 行,每行一个非负整数,代表答案对 109+7 取模的结果。
样例输入
文本
3
3
2 3 1
3
2 3 6
4
2 3 6 1
样例输出
样例解释
- 第 1 组数据,任意一种非空集合划分均满足。
- 第 2 组数据,任意一种非空集合划分均不满足。
- 第 3 组数据,S={1,2,3},T={4},gcd(a1⋅a2⋅a3,a4)=1;或者 S={4},T={1,2,3},gcd(a4,a1⋅a2⋅a3)=1。
数据范围
保证 0≤t≤5,1≤n≤105,1≤ai≤106。
| Subtask |
分值 |
n≤ |
ai≤ |
| 1 |
20 |
15 |
15 |
| 2 |
30 |
103 |
106 |
| 3 |
10 |
105 |
1 |
| 4 |
10 |
105 |
2 |
| 5 |
30 |
105 |
106 |