CF1459-C. Row GCD
CF1459-C. Row GCD
题意:
给出两个整数序列\(a、b\),他们的长度分别为\(n,m\)。对于数组\(b\)中的每个数字,让你求出\(gcd(a_1+b_j,a_2+b_j,...,a_n+b_j)\)。
思路:
本题用到了\(gcd\)的两个性质:
1. \(gcd(a_1,a_2,...,a_n) = gcd(a_1,gcd(a_2,..,a_n))\)
2. \(gcd(a_1,a_2,...,a_{n-1},a_n)=gcd(a_1,a_2-a_1,...,a_n-a_{n-1})\),其中\(a_1<=a_2<=...<=a_n\)
所以题中的式子\(gcd(a_1+b_j,a_2+b_j,...,a_n+b_j)=gcd(a_1+b_j,a_2-a_1,a_3-a_2,...,a_n-a_{n-1})\)。对于上面的式子,只需要先提前求\(gd=gcd(a_2-a_1,a_3-a_2,...,a_n-a_{n-1})\),然后对于每个\(b_j\)求出\(gcd(gd,a_1+b_j)\)就是答案。
AC代码:
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
typedef long long ll;
const int Maxn = 200005;
ll a[Maxn], b[Maxn];
ll gcd(ll _a, ll _b) {
return !_b ? _a : gcd(_b, _a % _b);
}
void solve() {
int n, m;
scanf("%d %d", &n, &m);
for (int i = 0; i < n; i++) {
scanf("%lld", a + i);
}
for (int i = 0; i < m; i++) {
scanf("%lld", b + i);
}
std::sort(a, a + n);
ll gd = 0;
for (int i = 1; i < n; i++) {
gd = gcd(gd, a[i] - a[i - 1]);
}
for (int i = 0; i < m; i++) {
printf("%lld%c", gcd(gd, a[0] + b[i])," \n"[i == m - 1]);
}
}
int main() {
int T;
solve();
return 0;
}
CF1459-C. Row GCD的更多相关文章
- Codeforces Round #691 (Div. 2) C. Row GCD (数学)
题意:给你两个数组\(a\)和\(b\),对于\(j=1,...,m\),找出\(a_1+b_j,...,a_n+b_j\)的\(gcd\). 题解:我们很容易的得出\(gcd\)的一个性质:\(gc ...
- CF 338 D GCD Table(CRT)
转载请注明出处,谢谢http://blog.csdn.net/ACM_cxlove?viewmode=contents by---cxlove 给定一个序列,a[1 ..k],问是否存在(i , ...
- Codeforces Round #691 (Div. 2)
A. Red-Blue Shuffle 题意:有两个长度为n的数组,数组a和数组b,问那个数组中的数字相比之下比另一个数组中相应位置的元素值更大一些,如果数组a大就输出RED,如果数组b大就输出BLU ...
- 修改版: 小伙,多线程(GCD)看我就够了,骗你没好处!
多线程(英语:multithreading),是指从软件或者硬件上实现多个线程并发执行的技术.具有多线程能力的计算机因有硬件支持而能够在同一时间执行多于一个线程,进而提升整体处理性能.具有这种能力的系 ...
- iOS-多线程之GCD(原创)
前言 GCD 全称 Grand Central DisPath NSOperation便是基于GCD的封装 基础知识 1.GCD的优势 (1)为多核的并行运算提出了解决方案 (2)GCD会自动利用更多 ...
- iOS 获取快递物流信息(GCD异步加载)
#import <UIKit/UIKit.h> @interface AppDelegate : UIResponder <UIApplicationDelegate> @pr ...
- Multithreading annd Grand Central Dispatch on ios for Beginners Tutorial-多线程和GCD的入门教程
原文链接:Multithreading and Grand Central Dispatch on iOS for Beginners Tutorial Have you ever written a ...
- ios GCD的使用及封装
实现代码: CGDHelper /* * Grand Central Dispatch (GCD)是Apple开发的一个多核编程的解决方法. * 系统要求:iOS4.0以上. */ #import & ...
- 利用GCD 中的 dispatch_source_timer 给tableViewCell添加动态刷新的计时/倒计时功能
1.思路一(失败) 在设置好cell 里的内容之后在每个cell 返回时调用定时器事件,更新cell 内容,然后刷新整个表格. - (void)didadida:(UITableViewCell *) ...
随机推荐
- 【一天一个知识点系列】- Http之状态码
状态码 简介 HTTP 状态码负责表示客户端 HTTP 请求的返回结果. 标记服务器端的处理是否正常. 通知出现的错误等工作 作用及类别 作用:状态码告知从服务器端返回的请求结果 状态码的类别 注意: ...
- [Usaco2009 Feb]Bullcow 牡牛和牝牛
原题链接https://www.lydsy.com/JudgeOnline/problem.php?id=3398 容易想到的一种\(dp\)就是:设\(dp[i][j]\)表示前\(i\)头牛里面有 ...
- 推荐几个学习Python的免费网站
想要学好Python,只靠看Python相关的书籍是远远不够的!今天为大家分享几个实用的Python学习网站. 欢迎各位热爱Python的小伙伴进群交流:610380249群里有大佬哦,而且很热心,群 ...
- 01. struts2介绍
struts2优点 与Servlet API 耦合性低.无侵入式设计 提供了拦截器,利用拦截器可以进行AOP编程,实现如权限拦截等功能 支持多种表现层技术,如:JSP.freeMarker.veloc ...
- JavaScript中创建数组的方式!
JavaScript中创建数组的方式! 利用数组字面量 // 1 直接量 console.log(Array.prototype); var arr = [1, 2, 4, 87432]; // 注意 ...
- linux通过ntpd同步服务器时间,
ntpd得rpm包下载地址:https://pkgs.org/download/ntp 比如我得服务器版本是centos7 x86的,那选择我点击的这一个: 下拉到最下面就有安装包下载了,我选择的是二 ...
- Python 代码的加密混淆
py 脚本编译成 c 文件(cython) 用 cython 将核心代码 py 模块文件转化成 .c 文件,再用 gcc 编译成 so(unix)文件,或者将其编译成 pyd(windows)文件. ...
- 网络编程中 TCP 半开连接和TIME_WAIT 学习
https://blog.csdn.net/chrisnotfound/article/details/80112736 上面的链接就是说明来 SO_KEEPALIVE 选项 为什么还需要 在应用层开 ...
- css选择器有哪些,选择器的权重的优先级
选择器类型 1.ID #id 2.class .class 3.标签 p 4.通用 * 5.属性 [type="text"] 6.伪类 :hover 7.伪元素 ::first-l ...
- RocketMQ 的几个简单问题与答案
1 单机版消息中心 一个消息中心,最基本的需要支持多生产者.多消费者,例如下: class Scratch { public static void main(String[] args) { // ...