Row GCD
题意
对于两个正整数序列 a 1 、 a 2 、 a 3 、 … a n和 b 1 、 b 2 、 b 3 … b m
对于每个 j = 1 、 2 、 … j找到 a 1 + b j 、 a 2 + b j + a 3 + b j 、 … a n + b j
的最大公约数
思路
代码
#include<bits/stdc++.h> #define INF 0x3f3f3f3f #define mod 1000000007 using namespace std; typedef long long LL; typedef pair<int, int>PII; inline LL gcd(LL a, LL b) { return b ? gcd(b, a % b) : a; } const int N = 200010; int n, m; LL a[N], b[N]; void solve() { cin >> n >> m; for (int i = 1; i <= n; ++i) scanf("%lld", &a[i]); for (int i = 1; i <= m; ++i) scanf("%lld", &b[i]); LL res = 0; for (int i = 2; i <= n; ++i) { res = gcd(res, a[i] - a[i - 1]); } for (int j = 1; j <= m; ++j) { cout << abs(gcd(res, a[1] + b[j])) << " "; } cout << endl; } int main() { //int t; cin >> t; //while (t--) solve(); return 0; }