CodeForces 1459C 数论 GCD

原题链接

题意

  • 首先给出n个数

  • 之后给出m个数,每次问之前的n个数加上当前的这个数之后,总体的gcd是多少,也就是答案需要求出m个总体的gcd

思路

  • 因为n和m都是2e5的范围,所以必须使用接近线性的算法

  • 考虑每次的计算前都是对原数组进行加法运算的改动,所以可以去思考gcd计算中和加减法有关的知识。也就是更相减损术

  • 公式:

\[gcd(a, b, c) = gcd(a, b - a, c - b)
\]

对三个以上的序列也同样成立

  • 所以先将第一列数进行从小到大的排序,然后计算出
\[C = gcd(a_2 - a_1, a_3 - a_2, ···,a_n - a_{n - 1})
\]

之后每次取 \(gcd(C, a_1 + b_j)\)就可以了。注意特判a数组中只有一个的情形。

AC代码

#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm> using namespace std; long long gcdd(long long a, long long b)
{
if (!b)
{
return a;
}
else
{
return gcdd(b, a % b);
}
} int n, m;
long long aa[200005];
long long bb[200005]; int main()
{
cin >> n >> m;
long long gd;
for (int i = 1; i <= n; ++i)
{
scanf("%lld", &aa[i]);
}
sort(aa + 1, aa + n + 1);
int co = 0;
bb[0] = 0;
bb[++co] = aa[1];
for (int i = 2; i <= n; ++i)//去重
{
if (aa[i] != aa[i - 1])
{
bb[++co] = aa[i];
}
}
gd = bb[co] - bb[co - 1];
for (int i = co - 1; i >= 2; --i)
{
gd = gcdd(gd, bb[i] - bb[i - 1]);
}
for (int i = 1; i <= m; ++i)
{
long long xx;
scanf("%lld", &xx);
printf("%lld ", co == 1 ? xx + bb[1] : gcdd(gd, bb[1] + xx));
}
return 0;
}

CodeForces 1459C 数论 GCD的更多相关文章

  1. L - Neko does Maths CodeForces - 1152C 数论(gcd)

    题目大意:输入两个数 a,b,输出一个k使得lcm(a+k,b+k)尽可能的小,如果有多个K,输出最小的. 题解: 假设gcd(a+k,b+k)=z; 那么(a+k)%z=(b+k)%z=0. a%z ...

  2. UVA.12716 GCD XOR (暴力枚举 数论GCD)

    UVA.12716 GCD XOR (暴力枚举 数论GCD) 题意分析 题意比较简单,求[1,n]范围内的整数队a,b(a<=b)的个数,使得 gcd(a,b) = a XOR b. 前置技能 ...

  3. Codeforces Round #554 (Div. 2) C. Neko does Maths (数论 GCD(a,b) = GCD(a,b-a))

    传送门 •题意 给出两个正整数 a,b: 求解 k ,使得 LCM(a+k,b+k) 最小,如果有多个 k 使得 LCM() 最小,输出最小的k: •思路 时隔很久,又重新做这个题 温故果然可以知新❤ ...

  4. CodeForces 1047C Enlarge GCD(数论)题解

    题意:n个数的gcd是k,要你删掉最少的数使得删完后的数组的gcd > k 思路:先求出k,然后每个数除以k.然后找出出现次数最多的质因数即可. 代码: #include<cmath> ...

  5. 【CodeForces - 1200C】Round Corridor (数论gcd)

    Round Corridor  Descriptions Amugae位于一个非常大的圆形走廊中.走廊由两个区域组成.内部区域等于nñ扇区,外部区域等于m米部门.在相同区域(内部或外部)的每对扇区之间 ...

  6. CodeForces 300C --数论

    A - A Time Limit:2000MS     Memory Limit:262144KB     64bit IO Format:%I64d & %I64u Submit Statu ...

  7. CodeForces 359D (数论+二分+ST算法)

    题目链接: http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=47319 题目大意:给定一个序列,要求确定一个子序列,①使得该子序 ...

  8. codeforces 803C Maximal GCD(GCD数学)

    Maximal GCD 题目链接:http://codeforces.com/contest/803/problem/C 题目大意: 给你n,k(1<=n,k<=1e10). 要你输出k个 ...

  9. Codeforces 803C. Maximal GCD 二分

    C. Maximal GCD time limit per test: 1 second memory limit per test: 256 megabytes input: standard in ...

  10. Codeforces 338 D. GCD Table

    http://codeforces.com/problemset/problem/338/D 题意: 有一张n*m的表格,其中第i行第j列的数为gcd(i,j) 给出k个数 问在这张表格中是否 有某一 ...

随机推荐

  1. Android项目Library导入的问题整理

    Android项目Library导入的问题整理 本来帮助朋友找寻一下android的一些特效的demo,结果找到了一个,朋友试验可以,自己却是在导入项目需要的library的时候总是出问题,真的很是丢 ...

  2. Android Orm框架(GreenDao)

    Android Orm框架(GreenDao) 分类: android2014-04-10 14:29 723人阅读 评论(0) 收藏 举报 GreenDao与Ormlite对比 Ormlite:简单 ...

  3. 23集训 Day4 数论

    快速幂 定义 快速幂,是一个在 \(\Theta(\log n)\) 的时间内计算 \(a^n\) 的小技巧,而暴力的计算需要 \(\Theta(n)\) 的时间. 解释 \[\because a^{ ...

  4. 是因为不同的浏览器内核吗--Could not register service workers到底是怎么回事

    什么是浏览器内核 浏览器内核(Rendering Engine),是浏览器最核心的部分. 它负责处理网页的HTML.CSS.JavaScript等代码,并将其转化为可视化的网页内容.即我们常说的对网页 ...

  5. 什么???CSS也能原子化!

    1.什么是原子化 CSS? Atomic CSS is the approach to CSS architecture that favors small, single-purpose class ...

  6. 基于jquery+html开发的json格式校验工具

    json简介 JSON是一种轻量级的数据交换格式. 易于人阅读和编写.同时也易于机器解析和生成. 它基于JavaScript Programming Language, Standard ECMA-2 ...

  7. Chromium Canvas工作流

    blink 中实现了2种 canvas,分别是 blink::HTMLCanvasElement 和 blink::OffscreenCanvas ,前者对应 html/dom 中的 canvas,后 ...

  8. influxdb报错:cache-max-memory-size exceeded

    转载请注明出处: influxdb报错日志: 该错误信息表示 InfluxDB 引擎超过了缓存最大内存大小.这意味着 InfluxDB 的缓存使用量超出了配置的限制. 要解决此问题,可以采取以下步骤来 ...

  9. maven2介绍(转)

    http://ttitfly.iteye.com/blog/152557 Maven2主要配置文件:pom.xml和settings.xml. POM是Maven的核心对象模型,对于项目,一般只需要p ...

  10. Chromium gclient使用

    gclient 是由 Google 用 Python 开发的一套跨平台的git仓库管理工具,它的作用类似 git 的 submodule,用来将多个git仓库组成一个solution进行管理,比如ch ...