CodeForces 1459C 数论 GCD
CodeForces 1459C 数论 GCD
题意
首先给出n个数
之后给出m个数,每次问之前的n个数加上当前的这个数之后,总体的gcd是多少,也就是答案需要求出m个总体的gcd
思路
因为n和m都是2e5的范围,所以必须使用接近线性的算法
考虑每次的计算前都是对原数组进行加法运算的改动,所以可以去思考gcd计算中和加减法有关的知识。也就是更相减损术
公式:
\]
对三个以上的序列也同样成立
- 所以先将第一列数进行从小到大的排序,然后计算出
\]
之后每次取 \(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的更多相关文章
- 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 ...
- UVA.12716 GCD XOR (暴力枚举 数论GCD)
UVA.12716 GCD XOR (暴力枚举 数论GCD) 题意分析 题意比较简单,求[1,n]范围内的整数队a,b(a<=b)的个数,使得 gcd(a,b) = a XOR b. 前置技能 ...
- 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: •思路 时隔很久,又重新做这个题 温故果然可以知新❤ ...
- CodeForces 1047C Enlarge GCD(数论)题解
题意:n个数的gcd是k,要你删掉最少的数使得删完后的数组的gcd > k 思路:先求出k,然后每个数除以k.然后找出出现次数最多的质因数即可. 代码: #include<cmath> ...
- 【CodeForces - 1200C】Round Corridor (数论gcd)
Round Corridor Descriptions Amugae位于一个非常大的圆形走廊中.走廊由两个区域组成.内部区域等于nñ扇区,外部区域等于m米部门.在相同区域(内部或外部)的每对扇区之间 ...
- CodeForces 300C --数论
A - A Time Limit:2000MS Memory Limit:262144KB 64bit IO Format:%I64d & %I64u Submit Statu ...
- CodeForces 359D (数论+二分+ST算法)
题目链接: http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=47319 题目大意:给定一个序列,要求确定一个子序列,①使得该子序 ...
- codeforces 803C Maximal GCD(GCD数学)
Maximal GCD 题目链接:http://codeforces.com/contest/803/problem/C 题目大意: 给你n,k(1<=n,k<=1e10). 要你输出k个 ...
- Codeforces 803C. Maximal GCD 二分
C. Maximal GCD time limit per test: 1 second memory limit per test: 256 megabytes input: standard in ...
- Codeforces 338 D. GCD Table
http://codeforces.com/problemset/problem/338/D 题意: 有一张n*m的表格,其中第i行第j列的数为gcd(i,j) 给出k个数 问在这张表格中是否 有某一 ...
随机推荐
- Python并发编程——操作系统发展史、多道技术、进程理论、开启进程、join方法、进程间的数据隔离
文章目录 必备知识回顾 今日内容详细 操作系统发展史 多道技术 必备知识点 多道技术图解 多道技术重点知识 进程理论 必备知识点 进程调度 进程运行的三状态图 两对重要概念 开启进程的两种方式 joi ...
- 嵌入式BI的精解与探索
摘要:本文由葡萄城技术团队原创并首发.转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. 前言 1996年,商业智能(BI)的概念首次浮现,随后的20多年间,商 ...
- Python-文件读取过程中每一行后面带一行空行。贼简单!!!!
关键点在于,将open()函数中,参数为w的一行,格式如下: csvfile = open(data_path + '-21w.csv', 'w') 加上一个参数为newline=' ' 格式如下: ...
- 11. 用Rust手把手编写一个wmproxy(代理,内网穿透等), 实现健康检查
11. 用Rust手把手编写一个wmproxy(代理,内网穿透等), 实现健康检查 项目 ++wmproxy++ gite: https://gitee.com/tickbh/wmproxy gith ...
- 什么???CSS也能原子化!
1.什么是原子化 CSS? Atomic CSS is the approach to CSS architecture that favors small, single-purpose class ...
- DRTREE - Dynamically-Rooted Tree 题解
DRTREE - Dynamically-Rooted Tree 本题建议评蓝. 思路: 题目就是要对一颗不定根树求子树权值和. 这题不带修,如果带修难度会增加一点,就跟 遥远的国度 差不多. 首先分 ...
- HttpWebResponse获取DOM数据注意之ContentEncoding
public string GetKaiJ(string type = "ssq") { /*1.通过WebBrowser控件&HttpWebRequest获得网站信息*/ ...
- JAVA类的加载(4) ——类之间能够隔离&类占用的资源能回收
一.类加载体系
- clipboard vue 一键复制
一键复制失败 首先 下载clipboard插件 npm install clipboard --save 在需要的组件里引入 也可以全局引入 import Clipboard from 'clipb ...
- Webpack相关知识点
webpack的优点 webpack从配置的入口出发,可以打包所有前端资源,同时可以配置多种loader来处理不同类型文件的转换,并且可以配置plugin来扩展模块打包流程,满足更多构建中特殊的需求, ...