看到式子先尝试推导一下:

问题转化为计算集合 的大小。想到 哈希表的思想 进行统计,但不知如何具体操作,只知道有 对数定一动一 的技巧。迁移为 对性质定一动一 的技巧。设 表示 的个数,则

  • ,则 是符合要求的答案;
  • ,则 是需要统计的信息。
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()