题目

题意:在 \(s\) 数组中找出尽可能多的数使得他们的最大公约数 \(>1\)

既然最大公约数 \(>1\),\(s\) 数组的值域是 \(1 \le s_i \le 10^5\),所以可以尝试枚举我所要求的最大公约数。

这样的话我要 \(O(n\sqrt{n}))\) 做出每个 \(s_i\) 的因子。

然后就搞定了。

可以在枚举最大公约数的时候只做素数,但优化不大。(\(O(n\sqrt n + n) \rightarrow O(n\sqrt n+\sqrt n)\))

  1. #include<stdio.h>
  2. #include<math.h>
  3. #define reg register
  4. #define ri reg int
  5. #define rep(i, x, y) for(ri i = x; i <= y; ++i)
  6. #define nrep(i, x, y) for(ri i = x; i >= y; --i)
  7. #define DEBUG 1
  8. #define ll long long
  9. #define il inline
  10. #define max(i, j) (i) > (j) ? (i) : (j)
  11. #define min(i, j) (i) < (j) ? (i) : (j)
  12. #define read(i) io.READ(i)
  13. #define print(i) io.WRITE(i)
  14. #define push(i) io.PUSH(i)
  15. struct IO {
  16. #define MAXSIZE (1 << 20)
  17. #define isdigit(x) (x >= '0' && x <= '9')
  18. char buf[MAXSIZE], *p1, *p2;
  19. char pbuf[MAXSIZE], *pp;
  20. #if DEBUG
  21. #else
  22. IO() : p1(buf), p2(buf), pp(pbuf) {}
  23. ~IO() {
  24. fwrite(pbuf, 1, pp - pbuf, stdout);
  25. }
  26. #endif
  27. inline char gc() {
  28. #if DEBUG
  29. return getchar();
  30. #endif
  31. if(p1 == p2)
  32. p2 = (p1 = buf) + fread(buf, 1, MAXSIZE, stdin);
  33. return p1 == p2 ? ' ' : *p1++;
  34. }
  35. inline bool blank(char ch) {
  36. return ch == ' ' || ch == '\n' || ch == '\r' || ch == '\t';
  37. }
  38. template <class T>
  39. inline void READ(T &x) {
  40. register double tmp = 1;
  41. register bool sign = 0;
  42. x = 0;
  43. register char ch = gc();
  44. for(; !isdigit(ch); ch = gc())
  45. if(ch == '-') sign = 1;
  46. for(; isdigit(ch); ch = gc())
  47. x = x * 10 + (ch - '0');
  48. if(ch == '.')
  49. for(ch = gc(); isdigit(ch); ch = gc())
  50. tmp /= 10.0, x += tmp * (ch - '0');
  51. if(sign) x = -x;
  52. }
  53. inline void READ(char *s) {
  54. register char ch = gc();
  55. for(; blank(ch); ch = gc());
  56. for(; !blank(ch); ch = gc())
  57. *s++ = ch;
  58. *s = 0;
  59. }
  60. inline void READ(char &c) {
  61. for(c = gc(); blank(c); c = gc());
  62. }
  63. inline void PUSH(const char &c) {
  64. #if DEBUG
  65. putchar(c);
  66. #else
  67. if(pp - pbuf == MAXSIZE) {
  68. fwrite(pbuf, 1, MAXSIZE, stdout);
  69. pp = pbuf;
  70. }
  71. *pp++ = c;
  72. #endif
  73. }
  74. template <class T>
  75. inline void WRITE(T x) {
  76. if(x < 0) {
  77. x = -x;
  78. PUSH('-');
  79. }
  80. static T sta[35];
  81. T top = 0;
  82. do {
  83. sta[top++] = x % 10;
  84. x /= 10;
  85. } while(x);
  86. while(top)
  87. PUSH(sta[--top] + '0');
  88. }
  89. template <class T>
  90. inline void WRITE(T x, char lastChar) {
  91. WRITE(x);
  92. PUSH(lastChar);
  93. }
  94. } io;
  95. int s[100010], n, a[100010];
  96. int g_P(int n) {
  97. rep(i, 1, n) {
  98. ri l = sqrt(a[i]);
  99. rep(j, 1, l) {
  100. if(a[i] % j == 0) if(a[i] / j != j) ++s[j], ++s[a[i] / j];
  101. else ++s[j];
  102. }
  103. }
  104. }
  105. int main() {
  106. ri ans = 0;
  107. read(n);
  108. rep(i, 1, n) read(a[i]);
  109. g_P(n);
  110. rep(i, 2, 100000) ans = max(ans, s[i]);
  111. print(ans == 0 ? 1 : ans);
  112. return 0;
  113. }

题解CF757B的更多相关文章

  1. 2016 华南师大ACM校赛 SCNUCPC 非官方题解

    我要举报本次校赛出题人的消极出题!!! 官方题解请戳:http://3.scnuacm2015.sinaapp.com/?p=89(其实就是一堆代码没有题解) A. 树链剖分数据结构板题 题目大意:我 ...

  2. noip2016十连测题解

    以下代码为了阅读方便,省去以下头文件: #include <iostream> #include <stdio.h> #include <math.h> #incl ...

  3. BZOJ-2561-最小生成树 题解(最小割)

    2561: 最小生成树(题解) Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 1628  Solved: 786 传送门:http://www.lyd ...

  4. Codeforces Round #353 (Div. 2) ABCDE 题解 python

    Problems     # Name     A Infinite Sequence standard input/output 1 s, 256 MB    x3509 B Restoring P ...

  5. 哈尔滨理工大学ACM全国邀请赛(网络同步赛)题解

    题目链接 提交连接:http://acm-software.hrbust.edu.cn/problemset.php?page=5 1470-1482 只做出来四道比较水的题目,还需要加强中等题的训练 ...

  6. 2016ACM青岛区域赛题解

    A.Relic Discovery_hdu5982 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Jav ...

  7. poj1399 hoj1037 Direct Visibility 题解 (宽搜)

    http://poj.org/problem?id=1399 http://acm.hit.edu.cn/hoj/problem/view?id=1037 题意: 在一个最多200*200的minec ...

  8. 网络流n题 题解

    学会了网络流,就经常闲的没事儿刷网络流--于是乎来一发题解. 1. COGS2093 花园的守护之神 题意:给定一个带权无向图,问至少删除多少条边才能使得s-t最短路的长度变长. 用Dijkstra或 ...

  9. CF100965C题解..

    求方程 \[ \begin{array}\\ \sum_{i=1}^n x_i & \equiv & a_1 \pmod{p} \\ \sum_{i=1}^n x_i^2 & ...

随机推荐

  1. java变量及常量

    变量 本质:就是代表一个"可操作的存储空间",空间位置是确定的,但是里面放置什么值不确定.我们可通过变量名来访问"对应的存储空间",从而操纵这个"存储 ...

  2. hdu1232 并查集总结

    前言 在一些有N个元素的集合应用问题中,我们通常是在开始时让每个元素构成一个单元素的集合,然后按一定顺序将属于同一组的元素所在的集合合并,其间要反复查找一个元素在哪个集合中. 这一类问题其特点是看似并 ...

  3. keycloak~管理平台的查询bug与自定rest中文检索

    对于keycloak来说,它的管理平台在它的源码中的admin-client中,它会定义相关的rest接口规范:在我们使用keycloak管理平台时,其中有一个组的查询,在我们查询中文组时,它是不支持 ...

  4. 堆&&优先队列&&TreeMap

    题目描述 5710. 积压订单中的订单总数 题解 题目不难,主要是要读懂题意,一步步模拟,代码较长,需要细心检查. 坑较多,比如我犯了很多傻逼问题:想都不想就拿1<<9+7当作100000 ...

  5. MySQL忘记密码怎么办-MySQL修改密码(亲测可用)

    前言: 最近要用到本地的MySQL,结果把密码忘记了. ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using pas ...

  6. Prometheus(一):Web服务环境监控

    写在前面 现每个后端的同学的日常都在跟服务(接口)打交道,维护老的比较大单体应用.按业务拆得相对比较细的新服务.无论企业内部用的,面向用户的前端的服务.流量大的有流量小的,有重要的有不那么重要的. 但 ...

  7. mysql中的空值

    空值,即NULL,在数据库中通过is null 和is not null来查询 陷阱一:空值不一定为空 空值是一个比较特殊的字段.在MySQL数据库中,在不同的情形下,空值往往代表不同的含义.这是My ...

  8. [NOI2000] 古城之谜

    题目描述 给定 n 和 n 个信息,每个信息包含一个词性 a (只有三种:名,动,辅)和对应的词 mot ,形为" \(a.mot\) ".(一次可能多词性) 最后给一个长度不大于 ...

  9. 使用Nginx将请求转发至Google Analytics实现后端数据统计

    前言 Google Analytics 加载缓慢是本博客在国内访问缓慢的原因之一.虽然通过使用大公司的 ga.js 的 CDN ,可以很大程度上加快加载 ga.js 文件的速度( ga.js 的更新频 ...

  10. [刘阳Java]_eayui-pagination分页组件_第5讲

    分页组件也是很基本的应用,这里我只给出一段简单的代码 关键注意一点:分页组件可以在上面添加buttons按钮,或者自定义分页组件的外观.这些内容需要自行的查看EasyUI的API文档 <!DOC ...