牛客挑战赛47 A 一道GCD问题
牛客挑战赛47 A 一道GCD问题
思路参考牛客上的题解:
根据多维的更相减损术得gcd(x,y,z)=gcd(x,y−x,z−y)得
gcd(a1+k,a2+k,a3+k…,an+k)=gcd(a1+k,a2-a1,a3-a2…)gcd(a1+k,a2+k,a3+k…,an+k)=gcd(a1+k,a2−a1,a3−a2…)
我们很容易可以求得等式右边的值为g我们很容易可以求得等式右边的值为g
那么对于最小得k就是(g-a1%g)%g 注意要排序;
参考链接:来自ID:7QQQQQQQ的评论
#include <iostream>
#include <cstdio>
#include <fstream>
#include <algorithm>
#include <cmath>
#include <deque>
#include <vector>
#include <queue>
#include <string>
#include <cstring>
#include <map>
#include <stack>
#include <set>
#include <cstdlib>
#define INF 0x3f3f3f3f3f3f3f3f
#define inf 0x3f3f3f3f
#define FILL(a,b) (memset(a,b,sizeof(a)))
#define re register
#define lson rt<<1
#define rson rt<<1|1
#define lowbit(a) ((a)&-(a))
#define ios std::ios::sync_with_stdio(false);std::cin.tie(0);std::cout.tie(0);
#define fi first
#define rep(i,n) for(int i=0;(i)<(n);i++)
#define rep1(i,n) for(int i=1;(i)<=(n);i++)
#define se second
#define scd(a) scanf("%d",&a)
#define scdd(a,b) scanf("%d%d",&a,&b)
#define scddd(a,b,c) scanf("%d%d%d",&a,&b,&c)
#define ac cout<<ans<<"\n"
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
typedef pair<ll,ll> pii;
int dx[4]= {-1,1,0,0},dy[4]= {0,0,1,-1};
const ll mod=1e9+7;
const ll N =1e6+10;
const double eps = 1e-4;
//const double pi=acos(-1);
int n;
ll a[N];
void sovle(){cin>>n;for(int i=1;i<=n;i++) cin>>a[i];sort(a+1,a+1+n);ll now=0;for(int i=2;i<=n;i++){now=__gcd(now,a[i]-a[i-1]);}ll k=(now-a[1]%now)%now;cout<<now<<' '<<k<<endl;
}
int main()
{iosint t=1;// cin>>t;while(t--){sovle();}return 0;
}
牛客挑战赛47 A 一道GCD问题相关推荐
- 牛客挑战赛47 D Lots of Edges(最短路+递归枚举子集)
牛客挑战赛47 D Lots of Edges 思路:点的权值最多只有(1<<17)-1(131071) ,那我们可以枚举终点的值来算最短路,每个点能连边的值都是固定的,可以通过递归枚举子 ...
- 牛客挑战赛47 C 条件(Floyd bitset优化)
牛客挑战赛47 C 条件 思路:首先我们要两个图,一个是一定能到达的,一个是可能到达的,如果我们使用floyd (n^3)就有可能会超时,因为只要求询问能否到达,所以权值只有0和1,那我们可以使用bi ...
- 牛客挑战赛42 A.小睿睿的数列
牛客挑战赛42 A.小睿睿的数列 题目链接 题目描述 小睿睿给了你一个长度为n的数列,他想问你该数列中满足条件(区间内存在某个数是区间内所有数的公因数)的最长区间有多少个 输入描述: 第一行 111 ...
- 牛客挑战赛36 - 纸飞机
题目链接:牛客挑战赛36 - 纸飞机 题目描述 直线上有n座山峰,第i座的高度为hi.从某座山峰上放飞一架纸飞机,它可以从左往右依次经过一系列高度严格递减的山头. 假设五座山峰的高度依次是3,4,3, ...
- 牛客挑战赛34 A 能天使的愿望 (dp 分组背包)
链接:https://ac.nowcoder.com/acm/contest/2271/A 来源:牛客网 题目描述 出题人寄给大家的一些闲话:参加了CSP-J/S 2019 的同学,考的都怎么样啊?不 ...
- 牛客挑战赛34 A.能天使的愿望(分组背包)
链接:https://ac.nowcoder.com/acm/contest/2271/A 来源:牛客网 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 65536K,其他语言1310 ...
- 牛客挑战赛48--A and B
A-天使果冻 链接:https://ac.nowcoder.com/acm/contest/11161/A 来源:牛客网 题意:一个数组包含n个数,求前i个数的次大值是多少(倘若最大值有两个,则次大值 ...
- 牛客挑战赛51 E NIT的gcd(欧拉反演,建图优化,三元环计数)
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Problem 给你一个正整数 nnn. 请你输出 ∑i=1n∑j=1n∑k=1ngcd(i,j)g ...
- 牛客多校4 - Harder Gcd Problem(构造+贪心)
题目链接:点击查看 题目大意:给出一个 n ,表示 1 ~ n 的 n 个数字,现在要求选出尽可能多的两两匹配,使得每组匹配的 gcd 都大于 1,输出最多能有多少组匹配,以及方案 题目分析: 这样的 ...
最新文章
- 图解phpstorm常用快捷键
- AAAI 2020 | 通过解纠缠模型探测语义和语法的大脑表征机制
- sharepoint站点Feature的定制与开发 以及 stsadm 常用命令
- 软件回归测试及其实践
- django中实现websocket
- 《C++ Primer 5th》笔记(10 / 19):泛型算法
- bzoj4598 [Sdoi2016]模式字符串 hash+点分
- linux双系统uefi引导修复,Windows和Ubuntu双系统,修复UEFI引导的两种办法
- 文字排版不可不看的优秀案例合集
- 运维管理中的制度和流程
- 剑指offer面试题[21]包含min函数的栈
- 一号教学楼供配电设计
- 如何查看MySQL源码
- python 勒索病毒_lucky 勒索病毒分析与文件解密
- Linux 系统升级蝉道
- HttpClilent整合Spring使用【配置和代码】
- Vue3中Compositions API的使用(一)
- 天行健,君子以自强不息;地势坤,群子以厚德载物。
- 中规中矩的输入两个正整数m和n,求其最大公约数和最小公倍数。
- 【c++数据结构】栈混洗的甄别算法
热门文章
- 硕博士的朋友圈都有哪些特点?
- 用 Python 实现打飞机
- 撤回的微信消息真的看不到?78行Python代码帮你看穿一切!
- 干货整理:处理不平衡数据的技巧总结!收好不谢
- java笔试题递归,递归(网上搜的一些笔试题)
- 在python中strip_python中strip()函数怎么用?
- linux perl模块检测,Linux有问必答:如何用Perl检测Linux的发行版本
- php的old函数,laravel单元测试之phpUnit中old()函数报错解决
- circle后面是什么意思 python_Ape circle Python操作-第2-01章-列表操作,小猿圈,作业
- 算法设计与分析——动态规划——最长公共子序列