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 *) ...
随机推荐
- 为啥使用innodb_flush_method=o_direct 就能减轻io压力呢
为啥使用innodb_flush_method=o_direct 就能减轻io压力呢
- 【Linux】记一次xfs分区数据恢复
项目有一块磁盘无法挂载,而且还没有做RAID.... # mount /dev/sda /xxx 报错 mount: special device /dev/sda/ does not exist ...
- 优先队列priority_queue排序
优先队列默认大顶堆,即堆顶元素是最大值 改成小顶堆时: priority_queue<int,vector<int>, greater<int> > Q;//注意最 ...
- 惠普电脑(HP PHILIPS系列)安装ubuntu后无法连接WIFI解决方案(手动安装8821CE驱动)
一步一步来, 先说环境: 我的电脑是HP PHILIPS系列,ubuntu版本是16.04 背景: win10安装ubuntu后发现无法连接wifi(但win10系统可以连接WIFI),在ubuntu ...
- 关于cin, cin.get(), getchar(),getline()的字符问题
一.getchar()和cin.get() getchar()会将开头的空格或者回车作为输入 1 #include<iostream> 2 using namespace std; 3 i ...
- LeetCode1022. 从根到叶的二进制数之和
题目 class Solution { public: int ans = 0; int sumRootToLeaf(TreeNode* root) { dfs(root,0); return ans ...
- DataGridView控件使用Demo
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...
- 干电池1.5V升压3.3V芯片电路图
1.5V升压3.3V的芯片 PW5100 是一款大效率.10uA低功耗.低纹波.高工作频率1.2MHZ的 PFM 同步升压 DC/DC 变换器.输入电压可低0.7V,输入电压范围0.7V-5V之间,输 ...
- 1.5V升5V芯片,1.5V升5V电路图规格书
常用的 5号,7号等 1.5V 干电池满电电压在 1.6V 左右,干电池输出耗电电压在 1V.适用PW5100,在 0.9V 时还能输出,彻底榨干干电池的电量. 1.5V 升5V 的芯片:PW5100 ...
- MySQL如何加锁控制并发
目录 前言 一.乐观锁 添加version字段 二.悲观锁 读锁 全表锁(LOCK TABLE 表 READ) 行锁(SELECT ... LOCK IN SHARE MODE) 写锁 全表锁(LOC ...