题目

题意:在 \(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. Pytest学习笔记6-自定义标记mark

    前言 在pytest中,我们可以使用mark进行用例的自定义标记,通过不同的标记实现不同的运行策略 比如我们可以标记哪些用例是生产环境执行的,哪些用例是测试环境执行的,在运行代码的时候指定对应的mar ...

  2. Redisson 分布式锁源码 02:看门狗

    前言 说起 Redisson,比较耳熟能详的就是这个看门狗(Watchdog)机制. 本文就一起看看加锁成功之后的看门狗(Watchdog)是如何实现的? 加锁成功 在前一篇文章中介绍了可重入锁加锁的 ...

  3. Win10 安装msi文件报错2503/2502解决方案

    我在网上查了很多资料,试了很多次都不行 唯独这种方式管用,请往下看 最后这一种方法我用了是有效的,在电脑左下角的"Win图标"上右击,选择"命令提示符(管理员)" ...

  4. .net core AES加密解密及RSA 签名验签

    引用 using Org.BouncyCastle.Crypto.Parameters; using Org.BouncyCastle.Security; using System; using Sy ...

  5. Redis 底层数据结构之String

    文章参考:<Redis设计与实现>黄建宏 Redis 的 string 类型底层使用的是 SDS(动态字符串) 实现的, 具体数据结构如下: struct sdshdr { int len ...

  6. 14 shell 函数

    1.shell函数的定义与调用 2.shell函数参数 3.函数返回值 1.shell函数的定义与调用 Shell 函数定义 说明 函数定义的简化写法 函数调用 function name() {   ...

  7. 如何为HttpServer服务器配置PHP FastCGI,从而让HttpServer具备动态交互能力

    一.软件准备 1.下载HttpServer :HttpServer.zip HttpServer是一款windows平台下基于IOCP模型的轻量级.高并发.高性能web服务器(参见文章). 2.下载W ...

  8. Kubernetes-22:kubelet 驱逐策略详解

    为什么要驱逐pod? 在可用计算资源较少时,kubelet为保证节点稳定性,会主动地结束一个或多个pod以回收短缺地资源,这在处理内存和磁盘这种不可压缩资源时,驱逐pod回收资源的策略,显得尤为重要. ...

  9. python 元组推导式

    >>> b=(page for page in range(10))>>> print(b)<generator object <genexpr> ...

  10. iframe跨域访问出现的cookie问题,提供两种解决方案

    最近在java项目对接时出现的一个问题.A系统嵌入B系统页面时,使用iframe去嵌入B系统页面丢失sessionid,导致B系统认为是未进行登录的请求,从而跳转到了B系统登录页. 解决方法查看此博客 ...