首页 > 来点gcd
头像 千雪水岷
发表于 2025-11-20 20:38:47
//头文件,当然你用万能头也可以 #include <iostream> #include <vector> #include <algorithm> //gcd函数实现 int gcd(int x, int y) { //根据欧几里得算法,得知gcd( 展开全文
头像 Myaljk
发表于 2022-03-11 23:51:07
题意:是否存在一个子集使得子集中所有元素的gcdgcdgcd为xx\\x 有一个需要注意的事情是:如果给定xxx是2,那么那个子集中的所有数都应该是2的倍数,有了这个思想,我们就可以利用调和级数On的遍历x取1~n时存在的gcd。 vis[i]:标记iii是否是给定的nnn个数内,是为truetru 展开全文
头像 ddb酱
发表于 2025-11-20 13:03:12
#include <bits/stdc++.h> using namespace std; #define endl "\n" #define all(a) a.begin(), a.end() #define yes cout<<"YES&qu 展开全文
头像 此在Dasein
发表于 2025-11-20 04:08:12
算法分析 一、算法思想 该问题的核心是利用数论性质将子集存在性问题转化为整体GCD判定问题。 关键数学性质:对于询问值 x,令 Mₓ 表示原多重集 S 中所有 x 的倍数的集合。则存在 S 的非空子集使得其 GCD 等于 x,当且仅当 Mₓ 中所有元素的整体 GCD 恰好等于 x。 证明: 充分性 展开全文
头像 Kato_Shoko
发表于 2025-11-20 10:53:35
#include <bits/stdc++.h> #define il inline using namespace std; using ll = long long; using ull = unsigned long long; using int128=__int128_t; 展开全文
头像 DPsans
发表于 2025-11-20 11:42:53
·首先,理解一下题意,给定一个序列,对每个查询,输出该序列是否存在子序列的gcd(最大公约数)为查询所给的数。·我们知道,对最开始的序列中的重复的数,其对gcd其实没有影响(对与其相等的数,gcd就是它自己,对与其不等的数,gcd也都是一样的);·所以我们可以先把序列去重(以题上的{2, 2, 6, 展开全文