题目描述
给定一个长度为 n 的数列 a1,a2,…,an 以及一个长度为 m 的数列 b1,b2,…,bm。
对于数列 b 的任意下标 j(1≤j≤m),你需要求出 a1+bj,a2+bj,…,an+bj 的最大公约数。
输入格式
第一行,两个整数 n 和 m,以一个空格分隔(1≤n,m≤2⋅105)。
第二行,n 个整数 a1,a2,…,an(1≤ai≤1018),两两之间以一个空格分隔。
第三行,m 个整数 b1,b2,…,bm(1≤bj≤1018),两两之间以一个空格分隔。
输出格式
输出共一行,包含 m 个整数,两两之间以一个空格分隔。
其中第 j(1≤j≤m) 个整数表示 a1+bj,a2+bj,…,an+bj 的最大公约数(即数列 a 中的 n 个元素各自均加上 bj 后,得到的数列中所有元素的最大公约数)。
4 4
1 25 121 169
1 2 7 23
2 3 8 24
说明/提示
样例解释
- b1=1,gcd(1+1,25+1,121+1,169+1)=2
- b2=2,gcd(1+2,25+2,121+2,169+2)=3
- b3=7,gcd(1+7,25+7,121+7,169+7)=8
- b4=23,gcd(1+23,25+23,121+23,169+23)=24
数据规模与约定
- 对于 30% 的数据,n,m≤20;ai,bj≤1000
- 对于 60% 的数据,n,m≤2000;ai,bj≤109
- 对于 100% 的数据,1≤n,m≤2⋅105;1≤ai,bj≤1018