1. 程式人生 > 其它 >C. Row GCD codeforces

C. Row GCD codeforces

技術標籤:筆記

gcd(a,b)=gcd(b,a−b)
gcd(a,b)=gcd(b,a%b)
輾轉相減法 o(logn)
輾轉相除法 o(n)

C. Row GCD
二維差分+輾轉相減法

#include <iostream>
#include <map>
#include <queue>
#include<bits/stdc++.h>
using namespace std;
const int maxn = 2e5 + 10;
const int mod=1e9+7;
typedef long long ll;
map<string,
int>mp; int gcd(int a,int b){ return b==0?a:gcd(b,a%b); } ll a[maxn]; int main() { int n,m;cin>>n>>m; for(int i=0;i<n;i++) cin>>a[i]; sort(a,a+n); ll g=0; for(int i=1;i<n;i++) g=__gcd(a[i]-a[i-1],g); for(int i=0;i<m;i++){ ll x;cin>>x; cout<<__gcd(x+a[
0],g)<<" "; } return 0; }