CodeForces - 1459C Row GCD (思维+数学)

简介: 笔记

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

的最大公约数



思路

9.png


代码

#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;
}


目录
相关文章
|
6月前
codeforces319——B. Psychos in a Line(思维+单调栈)
codeforces319——B. Psychos in a Line(思维+单调栈)
99 0
codeforces319——B. Psychos in a Line(思维+单调栈)
CodeForces - 1312D Count the Arrays(思维+组合数学)
CodeForces - 1312D Count the Arrays(思维+组合数学)
124 0
|
机器学习/深度学习 Java
Codeforces Round #748 (Div. 3) D2. Half of Same(数学 枚举 思维)
Codeforces Round #748 (Div. 3) D2. Half of Same(数学 枚举 思维)
102 0
codeforces1013——D. Chemical table(思维+转化+并查集)
codeforces1013——D. Chemical table(思维+转化+并查集)
88 0
|
人工智能
[Codeforces 1589D] Guess the Permutation | 交互 思维 二分
题意 多组输入:{ 每组给出一个n,有一个长度为n的数列,在开始的时候a i = i ,有三个数i , j , k 数列反转了 [i,j−1] [j,k] 要求出这三个数,可以对系统进行询问 [ l , r ] 区间内 逆序对 的个数,会返回这个值 }
125 0
|
存储 人工智能
变换--gcd小思维
变换 时间限制: 2 Sec 内存限制: 128 MB 题目描述 给出一个序列A,其中第i个数字为ai,你每次可以选择一个数字不变,将其他数字全部乘以x。其中x为任意素数。 无需考虑这些数字在变换过程中是否超过long long的存储范围。请回答:最少经过多少次操作,可以使得序列中所有数字全部相同。 输入 第一行包含一个正整数n,代表序列长度。 接下来一行包含n个正整数,描述序列中的每一个元素。
97 0

热门文章

最新文章