GCD + 调和级数

Problem - 1627D - Codeforces

题意

有 \(n\;(1<=n<=10^6)\) 个互不相同的数 \(a[i]\;(1<=a[i]<=10^6)\), 每次可以在 a 数组中选择两个数 \(a[i],a[j]\), 将令 \(d=gcd(a[i],a[j])\), 如果 \(d\), 不在 a 数组中,就把 \(d\) 加进去

求最多能加进去多少个数

思路

  1. 看到值域只有 \(10^6\), 可以想到可能与调和级数有关
  2. 对于数论题,很多时候可以更换枚举的顺序,所以可以枚举 \(d\), 看 \(d\) 能不能被加进去
  3. 对于所有 \(d\) 的倍数,如果他们的 \(gcd\) 等于 \(d\), 说明 \(d\), 可以被加进去
#include <iostream>
#include <algorithm>
#include <cstring>
#include <vector>
#include <cmath>
#include <set>
using namespace std;
#define endl "\n" typedef long long ll;
typedef pair<int, int> PII; const int N = 1e6 + 10;
int n;
int cnt[N]; int main()
{
ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
cin >> n;
int ans = 0;
for (int i = 1; i <= n; i++)
{
int x;
cin >> x;
cnt[x]++;
}
for (int d = 1; d <= N - 10; d++)
{
int g = 0;
for (int i = d; i <= N - 10; i += d)
if (cnt[i]) g = __gcd(g, i);
if (g == d && !cnt[d]) ans++;
}
cout << ans << endl;
return 0;
}

最新文章

  1. Paypal开发中遇到请求被中止: 未能创建 SSL/TLS 安全通道及解决方案
  2. Node.js 教程 03 - 创建HTTP服务器
  3. 山东省第七届ACM省赛------Triple Nim
  4. 10. javacript高级程序设计-DOM
  5. Logistic Regression逻辑回归
  6. 【jQuery基础学习】05 jQuery与Ajax以及序列化
  7. EDIUS设置采集磁带的方法
  8. Mac下显示\隐藏所有文件
  9. DIY RazorEngine 的程序集生成方式
  10. C#与C++、Java之比较概览
  11. DG下手工处理v$archive_gap方法
  12. BZOJ 2879 NOI2012美食节
  13. ssh密钥登录及远程执行命令
  14. Gathering Initial Troubleshooting Information for Analysis of ORA-4031 Errors on the Shared Pool
  15. ESP8266 RTOS SDK烧写环境构建
  16. [JavaScript]为JS处理二进制数据提供可能性的WEB API
  17. ***使用Fiddler抓取Android安卓手机的APP请求
  18. jQuery弹出层插件大全
  19. JavaWeb基础—数据库连接池DBCP、C3P0
  20. 微信小程序 功能函数 支付接口

热门文章

  1. VUE学习-插槽
  2. python 获取近几周日期
  3. 00_java进阶笔记
  4. notepad++ 配置Java 环境
  5. JavaScript 静态方法
  6. .NET CORE-Auto整合至MVC中
  7. jquery 中根据日期计算天数,以及去掉字符串中的空格
  8. OS-lab1
  9. SpringMVC学习day03
  10. vue+vant-ui小程序,微信小程序自定义导航栏(适配刘海屏)