首页 > 一道GCD问题
头像 精神病科黄主任
发表于 2021-01-09 22:01:44
A 那么对于最小得k就是(g-a1%g)%g 注意要排序 #include<bits/stdc++.h> using namespace std; typedef long long ll; const int N=1e5+50; ll a[N]; int main(){ int 展开全文
头像 あおいSakura
发表于 2021-01-17 12:39:38
一道GCD问题 题目链接:nowcoder 213804 到主站看:https://blog.csdn.net/weixin_43346722/article/details/112734928 题目大意 有一堆数,你要把他们都加一个尽可能小的数 k,让它们的 gcd 尽可能大。要你输出这个 k 和 展开全文
头像 此在Dasein
发表于 2025-11-17 02:30:55
加同一个数不改变差值 对于任意两个下标 都有 因此,经过加法后的所有数的任何公约数必须同时整除原来的所有差值 。 可实现的 必为差值的最大公约数的约数 记 任何一个满足 的整数 必须整除所有的差值,从而 . 于是可得到的最大可能的 正好是 本身。 如何求出对应的 由于 是 展开全文
头像 自由的风0450
发表于 2025-11-27 13:37:22
#include <iostream> #include<vector> #include<algorithm> using namespace std; typedef long long ll; ll gcd(ll a,ll b){ return b= 展开全文
头像 issue是云哥的小迷×呀
发表于 2021-01-10 20:00:08
传送门 先说结论的做法 差分数组的和原数组相同 因为设原数组的啊为 那么每个数都是的倍数,每个数减去一个的倍数仍然不会改变整体的 那么数组的每个数加上,差分数组只有第一个数会加上去 也就是差分数组的的就是最大的,这样就非常简单 但是我太傻了,开始没想到这个结论^_^ 加上一个使得所有数字的最大,设 展开全文
头像 周康禧
发表于 2025-12-05 11:39:50
#include <bits/stdc++.h> using namespace std; using ll = long long int; using ld = long double; using PII=pair<ll,ll>; using PIII=pair< 展开全文
头像 allkill
发表于 2020-12-26 11:08:25
自己一直用gcd函数,原理都快不记得了,现在写这篇博客来复习一下。比如找200和90的GCD最暴力的办法是一个for循环从2到89,找到最大的i使得200%i==0且90%i==0.上面的办法在时间效率很慢,复杂度为O(n)。下面讲一下辗转相除法的原理。还是200和90为例。先贴个代码。 int G 展开全文