#P1158. 约数与倍数

约数与倍数

题目描述

给定 NN 个质数 P1,P2,…,PNP_1,P_2,\dots, P_N,再给定 NN 个非负整数 A1,A2,…,ANA_1,A_2,\dots, A_N,定义 xx 如下

x=P1A1⋅P2A2…PNANx=P_1^{A_1} \cdot P_2^{A_2}\dots P_N^{A_N}

也就是说,xx 的质因数分解可以用 PP 与 AA 来表示。同样的方法,给定 MM 个质数 Q1,Q2,…,QMQ_1,Q_2,\dots, Q_M,再给定 MM 个非负整数 B1,B2,…,BMB_1,B_2,\dots, B_M,定义 yy 如下

y=Q1B1⋅Q2B2…QMBMy=Q_1^{B_1} \cdot Q_2^{B_2}\dots Q_M^{B_M}

记 gcd⁡(i,j)\gcd(i, j) 表示整数 ii 与 jj 的最大公因数,lcm(i,j)\text{lcm}(i,j) 表示整数 ii 与 jj 的最小公倍数。

请统计,有多少正整数对 ii 与 jj,可以满足 lcm(i,j)=x\text{lcm}(i,j)=x 且 gcd(i,j)=y\text{gcd}(i,j)=y。由于答案可能很大,输出方案数模 109+710^9+7 的余数。

输入格式

  • 第一行:单个整数表示 NN
  • 第二行:NN 个素数表示 P1,P2,…,PNP_1,P_2,\dots, P_N
  • 第三行:NN 个非负整数表示 A1,A2,…,ANA_1,A_2,\dots,A_N
  • 第四行:单个整数表示 MM
  • 第五行:MM 个素数表示 Q1,Q2,…,QMQ_1,Q_2,\dots, Q_M
  • 第六行:MM 个非负整数表示 B1,B2,…,BMB_1,B_2,\dots,B_M
  • 保证 PiP_i 是互不相同的素数
  • 保证 QjQ_j 是互不相同的素数

输出格式

2
2 3
2 2
1
3
1
4

样例解释 1

(3,36), (9,12), (12,9), (36,3)

数据范围

  • 30%30\% 的数据,1≤N,M≤51\leq N, M\leq 5,0≤Ai,Bj≤50\leq A_i,B_j\leq5,2≤Pi,Qj≤112\leq P_i,Q_j\leq 11
  • 60%60\% 的数据,1≤N,M≤1001\leq N, M\leq 100,0≤Ai,Bj≤1000\leq A_i,B_j\leq 100,2≤Pi,Qj≤10002\leq P_i,Q_j\leq 1000
  • 100%100\% 的数据,1≤N,M≤100,0001\leq N, M\leq 100,000,0≤Ai,Bj≤1090\leq A_i,B_j\leq 10^9,2≤Pi,Qj≤1092\leq P_i,Q_j\leq 10^9

来源

改编自 CF1866B Battling with Numbers