CF1034A Enlarge GCD
emmm真是简短的题意,真是妙题一个
假设原数组的gcdgcdgcd为ggg
考虑唯一分解的形式:
gcd=∏pimin(c1,c2,c3....ci)gcd=\prod p_i^{min(c1,c2,c3....c_i)}gcd=∏pimin(c1,c2,c3....ci)
先把每个ai/g每个ai/g每个ai/g,
现在g=gcd(a1....an)=1,我们需要把g变得更大g=gcd(a1....an)=1,我们需要把g变得更大g=gcd(a1....an)=1,我们需要把g变得更大
假设变成了g1g1g1,可以说,g1g1g1是个素数的情况一定更优,如果g1g1g1是一个合数,那么aia_iai中包含它的因子也必定包含g1/dg1/dg1/d的形式,所以g1g1g1是素数的情况一定不会更差
而素数的个数有n/lognn/lognn/logn个.
如果我们之前枚举1.5∗107∗log(1.5∗107)=1.5∗107∗231.5*10^7*log(1.5*10^7)=1.5*10^7*231.5∗107∗log(1.5∗107)=1.5∗107∗23
这个复杂度是一定会超时的,如果改为1.5∗107/23=1061.5*10^7/23=10^61.5∗107/23=106.这个数量级情况下可以通过O(nlogn)O(nlogn)O(nlogn)的筛法.
/*
You held me down but I broke free,
I found the love inside of me.
Now I don't need a hero to survive
Cause I already saved my life.
*/
#include<bits/stdc++.h>
using namespace std;
const int maxn = 1.5e7+5;
const int INF = 1e9+7;
typedef long long ll;
typedef pair<int,int> pii;
#define all(a) (a).begin(), (a).end()
#define pb(a) push_back(a)
int in[maxn];
const int maxm = 3e5+2;
int a[maxm];
//筛子
vector<int> pr;bool vis[maxn];
void table(int n){for(int i=2;i<=n;i++){if(!vis[i]) pr.push_back(i);for(auto p : pr){if(i*p>n) break;vis[i*p] = true;if(i%p==0) break;}}
}
int gcd(int a,int b){if(!b)return a;return gcd(b,a%b);
}
int main(){ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);int MX = 0;int n;cin>>n;int g = 0;for(int i=1;i<=n;i++){cin>>a[i];g = gcd(a[i],g);}for(int i=1;i<=n;i++) a[i]/=g,MX = max(MX,a[i]),in[a[i]]++;int ans = n;table(MX);for(auto g1 : pr){int cnt = 0;for(int i = g1;i<=MX;i+=g1) cnt+=in[i];ans = min(ans,n-cnt); }if(ans==n) cout<<-1<<"\n";else cout<<ans<<"\n";
}
CF1034A Enlarge GCD相关推荐
- Enlarge GCD CodeForces - 1034A(欧拉筛+最大公约数)
题意: 给出n个数,删去其中一些使得总的gcd(最大公约数)最大 题目: Mr. F has n positive integers, a1,a2,-,an. He thinks the greate ...
- 【CodeForces - 1047C】Enlarge GCD(数学,枚举,预处理打表,思维)
题干: F先生有n个正整数,a1,a2,...,an 他认为这些整数的最大公约数太小了,所以他想通过删除一些整数来扩大它 您的任务是计算需要删除的最小整数数,以便剩余整数的最大公约数大于所有整数的公约 ...
- 解题报告(十八)数论题目泛做(Codeforces 难度:2000 ~ 3000 + )
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 繁凡出品的全新系列:解题报告系列 -- 超高质量算法题单,配套我写的超高质量的题解和代码,题目难度不一 ...
- Codeforces Round #511 (Div. 1) 题解
在学校熬夜打$cf$找死啊. A - Enlarge GCD 先求个$gcd$,然后对于每个$a[i]$都除以$gcd$. 之后我们只需要统计每个质数整除的个数即可. 因为带上所有数的$gcd$一定是 ...
- LSNU寒假集训 题解
目录 LSNU寒假第一场(基础算法+几何) A - Fifa and Fafa B - Anton and Lines C - Minimum path D - Thematic Contests E ...
- OI每周刷题记录——lrllrl
看这标题就知道我是模仿的hzwer大佬,远程%%% 大佬的OI经历让蒟蒻我深受感触,为了晚一些AFO本蒟蒻也得加油了 从高二上期第一周开始计数,每个星期天更一次,一直更到我AFO 如果这是我此生最后一 ...
- CF803C Maximal GCD
洛谷 CF 分析 考虑从 \(k\) 个数的 \(gcd\) 入手. 设他们的 \(gcd\) 为 \(d\) .则有 \(d|n\) ,那么这 \(k\) 个数都除以 \(d\) 剩下的和即为 \( ...
- 数论(一)——素数,GCD,LCM
这是一个数论系列:) 一.素数 ×费马小定理 Theorem: 设 p 是一个素数,a 是一个整数且不是 p 的倍数,那么 很遗憾,费马小定理的逆定理是不成立的.对 a = 2,满足的非素数 n 是存 ...
- [CQOI2014]数三角形 组合数 + 容斥 + gcd
推导过程 : 组合数+容斥原理+gcd 正确做法是暴力的一种优化,ans=所有情况 - 平行坐标轴的三点共线 - 斜线三点共线 如果快速求斜线三点共线: 首先要知道一个结论,对于点(a,b) (x,y ...
最新文章
- 【复盘】端端,棒棒哒!
- 加速电子化报销费控服务,易快报完成1500万美元B轮融资
- 轻松看懂机器学习十大常用算法
- 一文弄懂YOLO目标检测算法
- C语言文件读写操作主要函数及其用例
- AI以假乱真怎么办?TequilaGAN教你轻松辨真伪
- plsql存过声明游标_plsql--游标用法
- 【转载】正则表达式30分钟入门教程
- UVa 1635 无关的元素(唯一分解定理+二项式定理)
- 学会了C语言你可以独立开发这些项目。。。。
- PetShop数据访问层之消息处理(转Bruce Zhang)
- WinEdt Latex使用人家提供的模板时无法插入参考文献的方法
- 导线怎么用计算机平差,导线平差计算软件
- html5页面风格,H5页面设计风格大盘点!
- Word毕业论文排版 公式居中 编号右对齐 及交叉引用(使用MathType公式编辑器实现)
- 支付宝接口调用出现INVALID_PARAMETER错误,订单信息无法识别
- Python基础学习笔记【廖雪峰】
- 浙传计算机二级成绩查询,浙江传媒学院艺考成绩查询
- 部署harbor并实现https(SAN签发证书)
- 看了一遍蝴蝶效应1,在看到了一篇很好的《蝴蝶效应1》影评