Row GCD (Codeforces 1459C)
Tags: Math, number theory

You are given two positive integer sequences $$$a_1, \ldots, a_n$$$ and $$$b_1, \ldots, b_m$$$. For each $$$j = 1, \ldots, m$$$ find the greatest common divisor of $$$a_1 + b_j, \ldots, a_n + b_j$$$.

Input: The first line contains two integers $$$n$$$ and $$$m$$$ ($$$1 \leq n, m \leq 2 \cdot 10^5$$$).The second line contains $$$n$$$ integers $$$a_1, \ldots, a_n$$$ ($$$1 \leq a_i \leq 10^{18})$$$.The third line contains $$$m$$$ integers $$$b_1, \ldots, b_m$$$ ($$$1 \leq b_j \leq 10^{18})$$$.

Output: Print $$$m$$$ integers. The $$$j$$$-th of them should be equal to GCD$$$(a_1 + b_j, \ldots, a_n + b_j)$$$.


Sample Inputs:
4 4
1 25 121 169
1 2 7 23

Sample Outputs:
2 3 8 24

Solution (Python):
import math
(t, a, g) = (input(), list(map(int, input().split())), 0)
for v in a[1:]:
    g = math.gcd(g, v - a[0])
print(*[math.gcd(g, v + a[0]) for v in map(int, input().split())])

Solution (Python):
import math
(t, a, g) = (input(), list(map(int, input().split())), 0)
for v in a[1:]:
    g = math.gcd(g, v - a[0])
print(*[math.gcd(g, v + a[0]) for v in map(int, input().split())])

Solution (Python):
from math import gcd
(n, m) = map(int, input().split())
arr = list(map(int, input().split()))
arr2 = list(map(int, input().split()))
arr3 = []
g = 0
for i in range(n):
    g = gcd(g, arr[i] - arr[0])
for i in range(m):
    arr3.append(gcd(g, arr2[i] + arr[0]))
print(*arr3)