看到式子先尝试推导一下:
问题转化为计算集合 的大小。想到 哈希表的思想 进行统计,但不知如何具体操作,只知道有 对数定一动一 的技巧。迁移为 对性质定一动一 的技巧。设
表示
的个数,则
- 若
且
,则
是符合要求的答案;
- 若
且
,则
是需要统计的信息。
if 1:
inf = float('inf')
import sys
input = lambda: sys.stdin.readline().strip()
I = lambda: input()
II = lambda: int(input())
IS = lambda: input().split()
MII = lambda: map(int, input().split())
LMII = lambda: list(map(int, input().split()))
L01 = lambda: list(int(x) for x in input())
LMZ = lambda A: list(map(list, zip(*A)))
from collections import deque,defaultdict,Counter
def Solve():
n = II()
A = LMII()
B = LMII()
C = [0] * n
dp = [[0] * (1000 + 5) for i in range(1000 + 5)]
ans = 0
for i in range(n):
if A[i] % B[i] != 0: continue
C[i] = A[i] // B[i]
for j in range(1, 1000 + 1):
if C[i] % j == 0:
ans += dp[j][B[i]]
dp[B[i]][j] += 1
print(ans)
if __name__ == '__main__':
T = 1
# T = int(input())
for i in range(T):
Solve()

京公网安备 11010502036488号