题目背景
小 Z 紧张地坐在了一张化学实验桌前,进行着化学实验。
教室里又传来了一阵哀叹声:
我…我好像又错了…我能再试一次吗?
题目描述
在她的面前,摆放着 n 个试管。试管里装着不明液体。对于每种不明液体,有 2 个已知的化学属性:a 和 b。第 i 种液体的两个属性值分别为 ai 和 bi。
现在,老师给她布置了 m 个实验。
对于每一次实验,有一个参照量 x(第 i 次实验的参照量记作 xi)。她需要把不明液体分成尽可能多的组,且满足:任意两种不同组的液体i和j, gcsd(ai,aj) 都不能大于 x2。
其中 gcsd 代表他们的最大公约平方数。k是两个数的公约平方数,当且仅当满足以下两个条件:
-
k 为这两个数的公约数;
-
k 为完全平方数。
而最大公约平方数 gcsd 为所有满足条件的 k 中的最大者。
形象的说, gcsd 可以理解成两个数的最大公约数的算术平方根的整数因式部分的平方。
例如:
求 gcsd(24,64),就是先求出 24,64 的最大公约数,是 8 ,然后 8=22,其整数因式是 2,所以 gcsd(24,64)=22=4。
她还需要在分组数最多的情况下,使自己的实验得分最大。
实验得分的定义:对于每一种试剂,定义其得分 ci 为 bi 分解质因数之后最大的指数。
例如:bi=12=22×31,ci=max{2,1}=2。
bi=90=21×32×51,ci=max{1,2,1}=2。
而实验得分即为所有组内的 ci 的最大值之和。
当然,她的 IQ 并不高,所以需要请求你的帮助。
输入格式
第一行两个整数 n,m。
第二行 n 个整数 a1…n。
第三行 n 个整数 b1…n。
第四行 m 个整数 x1…m。
输出格式
共 m 行,对于第 i 行,输出 2 个整数:第 i 次试验的组数和实验得分。
5 5
36 72 4 9 16
2 4 6 8 10
2 3 4 5 6
3 5
4 7
4 7
4 7
5 8
提示
样例解释 #1
b1=2=21,c1=1。
b2=4=22,c2=2。
b3=6=21×31,c3=max{1,1}=1。
b4=8=23,c4=3。
b5=10=21×51,c5=max{1,1}=1。
当 x=2 时,可分为三组:{1,2,4},{3},{5}。
实验得分为max{1,2,3}+max{1}+max{1}=5。
数据范围
「本题采用捆绑测试」
subtask |
n≤ |
m≤ |
ai≤ |
bi≤ |
x≤ |
分值 |
1 |
4 |
6 |
100 |
4×104 |
100 |
5 |
2 |
8 |
7 |
20 |
103 |
10 |
3 |
20 |
30 |
50 |
8×103 |
100 |
10 |
4 |
100 |
60 |
100 |
4×104 |
103 |
5 |
5×103 |
110 |
103 |
105 |
4×103 |
6 |
2×104 |
250 |
3×103 |
106 |
3×103 |
7 |
5×104 |
103 |
104 |
2×107 |
1.5×104 |
15 |
8 |
105 |
8×103 |
2×104 |
2.2×104 |
9 |
2×105 |
4×104 |
3×104 |
20 |
对于 100% 的数据:
1≤n,m≤2×105,2≤ai≤4×104,2≤bi≤2×107,2≤x≤3×104。
我…我好像又错了…我能再试一次吗?