[题目链接]

https://codeforces.com/contest/1047/problem/C

[算法]

首先求出n个数的最大公约数g , 将每个数除以g , 那么 , 问题就转化为在n个数中选出一个数集 , 使得这个数集中的数最大公约数不为1 , 最大化数集大小

预处理Ai范围内的质数 , 然后对于每个数分解质因数即可

时间复杂度 : O(NlogN + N log V)

[代码]

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. const int MAXN = 3e5 + ;
  4. const int MAXP = 1.5e7 + ;
  5.  
  6. int n,tot;
  7. int a[MAXN],prime[MAXP],f[MAXP],cnt[MAXP];
  8.  
  9. template <typename T> inline void read(T &x)
  10. {
  11. T f = ; x = ;
  12. char c = getchar();
  13. for (; !isdigit(c); c = getchar()) if (c == '-') f = -f;
  14. for (; isdigit(c); c = getchar()) x = (x << ) + (x << ) + c - '';
  15. x *= f;
  16. }
  17. inline int gcd(int x,int y)
  18. {
  19. if (y == ) return x;
  20. else return gcd(y,x % y);
  21. }
  22.  
  23. int main()
  24. {
  25.  
  26. read(n);
  27. for (int i = ; i <= n; i++) read(a[i]);
  28. int g = a[];
  29. for (int i = ; i <= n; i++) g = gcd(g,a[i]);
  30. for (int i = ; i <= n; i++) a[i] /= g;
  31. for (int i = ; i < MAXP; i++)
  32. {
  33. if (!f[i])
  34. {
  35. f[i] = i;
  36. prime[++tot] = i;
  37. }
  38. for (int j = ; j <= tot; j++)
  39. {
  40. int tmp = i * prime[j];
  41. if (tmp > MAXP) break;
  42. f[tmp] = prime[j];
  43. if (prime[j] == f[i]) break;
  44. }
  45. }
  46. int ans = -;
  47. for (int i = ; i <= n; i++)
  48. {
  49. int pre = - , tmp = a[i];
  50. while (tmp != )
  51. {
  52. if (f[tmp] == pre)
  53. {
  54. tmp /= f[tmp];
  55. continue;
  56. }
  57. cnt[f[tmp]]++;
  58. if (cnt[f[tmp]] > ans) ans = cnt[f[tmp]];
  59. pre = f[tmp];
  60. tmp /= f[tmp];
  61. }
  62. }
  63. if (ans == -) printf("-1\n");
  64. else printf("%d\n",n - ans);
  65.  
  66. return ;
  67.  
  68. }

[Codeforces Round511C] Enlarge GCD的更多相关文章

  1. CodeForces 1047C Enlarge GCD(数论)题解

    题意:n个数的gcd是k,要你删掉最少的数使得删完后的数组的gcd > k 思路:先求出k,然后每个数除以k.然后找出出现次数最多的质因数即可. 代码: #include<cmath> ...

  2. Codeforces Round #511 (Div. 2):C. Enlarge GCD(数学)

    C. Enlarge GCD 题目链接:https://codeforces.com/contest/1047/problem/C 题意: 给出n个数,然后你可以移除一些数.现在要求你移除最少的数,让 ...

  3. CodeFroces-- 511div2 C. Enlarge GCD

    题目链接:C. Enlarge GCD 给你一个序列 删除一些数看可以让他们之间的gcd变大如果可以输出删除数量最小的个数 先求出共同 gcd 然后除去 找出出现最多的质数 然后减去就可以了 #inc ...

  4. C. Enlarge GCD Codeforces Round #511 (Div. 2)【数学】

    题目: Mr. F has nn positive integers, a1,a2,…,an. He thinks the greatest common divisor of these integ ...

  5. Codeforces Round #511 (Div. 2)-C - Enlarge GCD (素数筛)

    传送门:http://codeforces.com/contest/1047/problem/C 题意: 给定n个数,问最少要去掉几个数,使得剩下的数gcd 大于原来n个数的gcd值. 思路: 自己一 ...

  6. 【Codeforces 1034A】Enlarge GCD

    [链接] 我是链接,点我呀:) [题意] 题意 [题解] 设原来n个数字的gcd为g 减少某些数字之后 新的gcd肯定是g的倍数 即gx 我们可以枚举这个x值(x>=2) 看看原来的数字里面有多 ...

  7. Codeforces Round #511 (Div. 2) C. Enlarge GCD (质因数)

    题目 题意: 给你n个数a[1]...a[n],可以得到这n个数的最大公约数, 现在要求你在n个数中 尽量少删除数,使得被删之后的数组a的最大公约数比原来的大. 如果要删的数小于n,就输出要删的数的个 ...

  8. Codeforces Round #511 (Div. 2) C. Enlarge GCD

    题目链接 题目就是找每个数的最小素因子,然后递归除,本来没啥问题,结果今天又学习了个新坑点. 我交了题后,疯狂CE,我以为爆内存,结果是,我对全局数组赋值, 如果直接赋值,会直接在exe内产生内存,否 ...

  9. codeforces 803C Maximal GCD(GCD数学)

    Maximal GCD 题目链接:http://codeforces.com/contest/803/problem/C 题目大意: 给你n,k(1<=n,k<=1e10). 要你输出k个 ...

随机推荐

  1. MySQL主从配置详解

    一.mysql主从原理 1. 基本介绍 MySQL 内建的复制功能是构建大型,高性能应用程序的基础.将 MySQL 的 数亿分布到到多个系统上去,这种分步的机制,是通过将 MySQL 的某一台主机的数 ...

  2. Far Relative’s Problem (贪心 计算来的最多客人)

    Description Famil Door wants to celebrate his birthday with his friends from Far Far Away. He has n  ...

  3. Tomcat处理HTTP请求原理

    一.Tomcat是什么? Tomcat是一个Web应用服务器,同时也是一个Servlet/JSP容器.Tomcat作为Servlet容器,负责处理客户端请求,把请求传送给Servlet,并将Servl ...

  4. IDEA的Maven Projects无法显示

    记一个小坑: 前两天重装了一下电脑系统,下载了个最新的IDEA2018.3.5,把Maven.JDK.TomCat都设置好了 今天打开IDEA创建一个新的Maven项目,项目没有显示让我导入Maven ...

  5. Spark 动态(统一)内存管理模型

    作者编辑:王玮,胡玉林 一.回顾 在前面的一篇文章中我们介绍了spark静态内存管理模式以及相关知识https://blog.csdn.net/anitinaj/article/details/809 ...

  6. Linux清除arp缓存

    arp缓存就是IP地址和MAC地址关系缓存列表.在Windows下 arp -d [$ip] 不指定IP地址时清除所有arp缓存.在Linux下 arp -d $ip 必须指定IP地址才能执行这条命令 ...

  7. [NOIP2005] 提高组 洛谷P1051 谁拿了最多奖学金

    题目描述 某校的惯例是在每学期的期末考试之后发放奖学金.发放的奖学金共有五种,获取的条件各自不同: 1) 院士奖学金,每人8000元,期末平均成绩高于80分(>80),并且在本学期内发表1篇或1 ...

  8. 【HDOJ6118】度度熊的交易计划(费用流)

    题意: 度度熊参与了喵哈哈村的商业大会,但是这次商业大会遇到了一个难题: 喵哈哈村以及周围的村庄可以看做是一共由n个片区,m条公路组成的地区. 由于生产能力的区别,第i个片区能够花费a[i]元生产1个 ...

  9. Thinkphp5.0 的视图view的比较标签

    Thinkphp5.0 的视图view的比较标签 {eq name="a" value="10"} <p>相等</p> {else/} ...

  10. 手把手教你编写一个简单的PHP模块形态的后门

    看到Freebuf 小编发表的用这个隐藏于PHP模块中的rootkit,就能持久接管服务器文章,很感兴趣,苦无作者没留下PoC,自己研究一番,有了此文 0×00. 引言 PHP是一个非常流行的web ...