codeforces511 div2C/div1A enlarge gcd 数论+思维

智能驾驶智慧交通行业智算中心(AIDC)建设规划方案.pptx 立即下载

题意:

给你n个数,需要删除几个数,使得剩余数的gcd大于初始数的gcd,问最少需要删除多少个数。

题解:

所有数的gcd是跟每个数的质因子有关的,此题只需算出删除数的个数,不需要计算删除数后的gcd。首先,算出所有数的gcd,然后一次枚举每一个数,先将这个数除以gcd,之后在枚举质数p,算每个数所贡献的质数cnt[prime]++。答案就是n-max{ cnt[prime] }。

这个复杂度如果直接枚举全部质数的话复杂度太高,可以发现2,4,6,8…都可以归于一个质数2,因为我们只需要比初始gcd大,所以只需计算对2的贡献即可。


#include <bits/stdc++.h>
using namespace std;
const int maxn = 3e5+5;
const int N = 15000000;
int gcd(int a,int b) {
    return b == 0 ? a : gcd(b, a%b);
}
int a[maxn];
int check[N+5];
int prime[N+5],phi[N+5];
int tot;
void phi_table() {
    memset(check, 0 ,sizeof check);
    for(int i = 2; i <= N; ++i) {
        if(!check[i]) 
            for(int j = i; j <= N; j+= i)
                check[j] = i;
    }
}
int cnt[N+5];
int main() {
    phi_table();
    // cout << tot << endl;
    // cout << -1 << endl;
    int n;
    scanf("%d", &n);
    int GCD = 0;
    for(int i = 0; i < n; ++i) {
        scanf("%d", &a[i]);
        GCD = gcd(GCD, a[i]);
    }
    for(int i = 0; i < n; ++i) {
        int t = a[i]/GCD;
        for(int x = check[t]; x > 1;) {
            cnt[x]++; // 含有质因子x的a[i]个数
            while(t%x == 0) t /= x;
            x = check[t];
        }
    }
    int ans = 0;
    for(int i = 0; i <= N; ++i) {
        if(cnt[i] > ans)
            ans = max(ans,cnt[i]);
    }
    ans = n-ans;
    if(ans == n)
        puts("-1");
    else {
        cout << ans << endl;
    }
    return 0;
}

douyin-favorite-MyLike-2.0.3.zip 立即下载

相关推荐

英文打字练习 可自定义练习范围

英文打字练习 可自定义练习范围 给初学者熟悉键位用

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

http://codeforces.com/contest/1047/problem/C 题意:给出一串数,要求出删去最少个数字,使这串数的gdc增大。 题解:开始我想的dp求最长的gcd大于原gcd的字串的长度,但是时间太长了。看来别人的题解才知道。先记录下每个数字出行的次数,然后从原来的gcd + 1开始枚举,找出所有大于gcd的字串中的最长长度。但是直接这样的话是n平方的复杂度,所以有了...

PinesL 399

非凸非光滑优化的惯性块镜像下降方法(Matlab代码实现)

内容概要:本文详细介绍了“非凸非光滑优化的惯性块镜像下降方法”的Matlab代码实现,重点针对三相PWM控制等复杂工程场景中的非凸非光滑优化问题,提出一种高效的迭代求解算法。文章系统阐述了该方法的数学建模原理、收敛性分析及优化机制,并提供了完整的Matlab仿真代码与多个典型应用实例(如储能系统管理、电力电子控制等),帮助读者深入理解算法在实际科研与工程中的部署方式。内容兼具理论深度与实践价值,突出展示了该方法在电力系统、信号处理和数据融合等领域的广泛应用潜力。; 适合人群:具备扎实的数学优化理论基础和良好Matlab编程能力,从事控制工程、电力电子、信号处理或运筹优化等相关方向的研究生、科研人员及工程师(建议具有1-3年以上相关经验);特别适合致力于非凸优化、智能算法设计及工业级仿真验证的技术人员。; 使用场景及目标:① 掌握非凸非光滑优化问题的先进求解策略,提升对复杂目标函数与约束条件的处理能力;② 利用所提供的Matlab代码快速实现惯性块镜像下降算法,应用于电力系统优化控制、路径规划、信号恢复等科研项目中;③ 借助文中的仿真案例进行算法性能测试、参数调优与二次开发,推动高水平论文撰写与技术创新。; 阅读建议:此资源以算法实现为核心,建议读者结合理论推导与代码实践同步学习,优先按照文档推荐目录顺序逐步深入,确保掌握前置知识体系;同时关注公众号“荔枝科研社”获取完整资源包、配套资料及更新内容,全面提升学习完整性与科研应用效能。

Codeforces Round #511 (Div. 2) C - Enlarge GCD (数论, 暴力)

题目大意 给一串数字,删除最少的数使得所有数的gcd变大 思路 先求出所有数的gcd值,然后枚举大于此gcd所有的素数,然后看有多少数的gcd是这个素数。n - cnt 就是要消去的值。 代码 #include &lt;bits/stdc++.h&gt; using namespace std; int gcd(int a, int b) { return b ? gcd(b, a%b)...

sunmaoxiang的博客 310

Comsol有限元网格剖分实战:从基础操作到高效仿真技巧

本文系统介绍了COMSOL有限元网格剖分的核心实战技巧。从基础的物理场控制与用户控制网格选择,到三角形、四边形、四面体等网格单元类型的适用场景,再到扫掠网格、边界层网格与复制网格等高效剖分方法,最后讲解了网格质量评估与几何预处理的关键步骤。旨在帮助用户掌握从自动到手动、从基础到高效的网格剖分艺术,实现仿真精度与计算效率的最佳平衡。

j7k8l的博客 375

AI大模型应用性能核心指标:TTFT 与 TPOT 详解

这两个指标专门衡量大模型流式响应性能,是评估用户体验的关键指标。· 是什么:从请求到第一个输出的等待时间· 为什么重要:决定用户的第一印象和响应感知· 优化方向:模型加载、预处理、冷启动优化· 行业标准:最好<500ms,可接受<1.5s· 是什么:每个输出token的平均生成时间· 为什么重要:决定流式输出的流畅度和总完成时间· 优化方向:推理引擎、内存带宽、批处理优化· 行业标准:最好<50ms/token,可接受<100ms/token在Dify/大模型应用中的意义。

lovehu6686的博客 3941

【CF】【每日一练】1140C+755C+511C+1154E

题目链接:传送门 【题意】: 给你n首歌,每首歌都有各自的长度length和美感beauty。 然后让你选择出最多k首出来,使得观赏度达到最大值。 观赏度 = (选择的歌曲 的长度 )× (在所选歌曲中美感最低的) 【题解】: 其实一开始以为简单的排序,美感降序,然后选择之前的歌曲即可。 但是怎么确保前面K-1首,一定是时间总和最长呢??? 这就用Set来维护,一直把时间最短的...

Z_sea的博客 365

ICC2: 如何让CTS指定pin多长指定长度

这里create_clock不需要写到sdc里,在脚本里写就行,需要注意的是脚本里存在remove_clock_tree的话,add_buffer就要放remove_clock_tree后面,或者给guide buffer设don't touch也行。跟innovus的操作逻辑一样,如果要让tree上的某一点长长,要先考虑这个点后面的clock tree能正常balance。我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧?-5意味着长长5ns,相反正值意味着做短。

m0_61544122的博客 679

CodeFroces-- 511div2 C. Enlarge GCD

题目链接:C. Enlarge GCD 给你一个序列 删除一些数看可以让他们之间的gcd变大如果可以输出删除数量最小的个数 先求出共同 gcd 然后除去 找出出现最多的质数 然后减去就可以了 #include<bits/stdc++.h> using namespace std; #define maxn 10000010 //#define int l...

dianzanji4884的博客 325

撸毛笔记-朴朴超市 v1.01

朴朴超市 v1.01脚本地址:自动签到和组队赚朴分, 朴分可以抵扣50%的金额组队瓜分需要4人成团, 每个号每天只能开团和入队各一次每天跑一两次即可使用扫码或自己想办法捉refreshToken扫码获取token: (先微信进入朴朴超市小程序并登录注册过账号再扫码)把获取的refreshToken和备注(非必须)填到文件pupuCookie.txt里(第一次运行会自动创建), 多账号换行或&或@隔开。

xiaoshun007的专栏 1804

华为OD机试 - 整型数组按照个位数排序(Python/JS/C/C++ 双机位C卷 100分)

本专栏收录于《华为OD机试真题(Python/JS/C/C++)》。刷的越多,抽中的概率越大,私信哪吒,备注华为OD,加入华为OD刷题交流群,每一题都有详细的答题思路、详细的代码注释、3个测试用例、为什么这道题采用XX算法、XX算法的适用场景,发现新题目,随时更新。给定一个非空数组(列表),其元素数据类型为整型,请按照数组元素十进制最低位从小到大进行排序,十进制最低位相同的元素,相对位置保持不变。当数组元素为负值时,十进制最低位等同于去除符号位后对应十进制值最低位。给定一个非空数组,其元素数据类型为32位有

学Java,找哪吒 398

Codeforces Round #511 (Div. 2)C+暴力筛

题目链接:http://codeforces.com/contest/1047/problem/C 题目大意:给你长度为n的数组,这个数组的gcd为m,输出能够使m变大的情况下至少要删除多少个数,如果删除数字不能使m变大的话,就为没有答案,输出-1 思路:把这些数除以他们所有数的最大公因数,保存在数组s1中,这s1中具有倍数(至少2倍)关系的数最多的个数即为保留的个数。 思考:为什么这样的复杂度没...

H_ang的博客 309

MIPI D-PHY TX 一致性测试实例解析 Part 02

如果测过1.3.x,并对这组测试的细节已经熟悉的前提下,1.4.x的测试将会变得轻松,因为几乎相同的测试项被用于时钟通道的数据测量。

一只豌豆象的博客 8314

Codeforces Round #511 (Div. 2) C. Enlarge GCD (思维题)

原题地址:http://codeforces.com/contest/1047/problem/C 题意:给出n个数字,现在询问你最少需要删除多少个数字使得剩余数字的gcd会增大,如果不能不能就输出-1 思路:我们考虑先求出所有数字的gcd,然后再让每一个数字除这个gcd,那么除完之后的序列的gcd必定为1.那么如果这些数字全部是1,那么必然不能使得gcd变大.否则的话,我们只需要记录每一个数字的...

yiqzq的博客 506

银河麒麟硬盘健康检测:smartctl/badblocks实战与坏盘预判

xfs_repair检查。S.M.A.R.T检测。

信创运维工程师 · 银河麒麟 & 容器实战 | 金融生产环境迁移·等保加固 | 142篇原创·17万+阅读 859

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

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

题目传送门 题意: 让你删除一些数,使得剩余数的gcd尽可能大。 做法: 这里需要用思维想一下(`・ω・´) 我们先求出原来n个数的gcd,我们把每个数除以这个gcd得到的新的n个数他们有什么特征嘞? 对,他们这n个数,没有公因子了,但是两个数之间,三个数之间……都还可能存在它们的公因子 那么什么才会使原gcd变小,没错,互质的! 所以这个问题就转换成什么了呢?保留最多的数,使得这些...

WangMeow --- ᶘ ᵒᴥᵒᶅ ฅ^•ﻌ•^ฅ 401

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Codeforces Round #511 (Div. 2) C - Enlarge GCD(筛法)

题意: 给你n个数,然后让你删掉一些数使得剩下的数的gcd比原来的gcd大,并且要使删掉的数的数量最少 最后输出需要删掉的数的数量   解析: 大致有两种做法,我用的是将每一个数质因数分解 这个分解用的是线性筛,因为线性筛中遍历到每一个合数时都是通过该合数最小的质因数*某一个数 得到的,那么我们就用mu[]记录每一个数最小的质因数,然后递归地分解这个数就可以了 #include ...

咸鱼有梦想 339

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

2018 CCPC-final K - Mr. Panda and Kakin(RSA解密) 和 第十届蓝桥省赛C++A组填空题 RSA解密(非暴力解法)

https://codeforc.es/gym/102055/problem/K K - Mr. Panda and Kakin 题意 给出n,cn, cn,c,n=p∗qn = p*qn=p∗q,ppp和qqq是x附近相邻的两个质数,c=f230+3 mod nc = f^{2^{30}+3} \ mod\ nc=f230+3 mod n。求出fff的值。...

Link_Ray的博客 1257

康托展开与逆康托展开(模板)

康托展开:求一个数在全排列中的第几位。 例如{1,2,3,4,…,n}表示1,2,3,…,n的排列,12345……n,即为第0个排列。 以{1,2,3,4} 表示1,2,3,4的排列为例,求1324在全排列中的第几位。 由组合数学易得:全排列的总数为4!。 第一位有4种选法,第二位3种,第三位2种,第一位1种。 首先 1 比 它小的数是 0 个 ,比1000小的排列有0 * 3!(3!代表

Link_Ray的博客 835

codeforces 936A Save Energy(数学思维)

Julia is going to cook a chicken in the kitchen of her dormitory. To save energy, the stove in the kitchen automatically turns off after k minutes after turning on. During cooking, Julia goes to the ...

Link_Ray的博客 762

扩展BSGS

https://codeforces.com/gym/101853/problem/G 当板子记住把 #include<bits/stdc++.h> using namespace std; const int MAX=5e5+10; typedef long long ll; ll BSGS(ll a,ll b,ll m) { a%=m; b%=m; if(b...

Link_Ray的博客 731

扩展欧几里得算法求解不定方程||中国剩余定理

对于 ax+by=gcd(a,b)ax+by=gcd(a,b)ax+by=gcd(a,b) 这样的方程,可以用扩展欧几里得算法exgcd求出一组通解。 根据欧几里得求gcd: gcd(a,b)=gcd(b,a%b)gcd(a,b)=gcd(b,a\%b)gcd(a,b)=gcd(b,a%b) 可得 bx+(a%b)y=gcd(b,a%b)bx+(a\%b)y=gcd(b,a\%b)bx+(a%b)...

Link_Ray的博客 712

codeforces 1114C Trailing Loves (or L'oeufs?) (数论)

https://codeforces.com/contest/1114/problem/C 题意 输入一个n和b。1≤n≤10181\leq n\leq 10^{18}1≤n≤1018,2≤b≤10122 \leq b \leq 10^{12}2≤b≤1012。 输出n! 在b进制下,末尾连续0的个数。 例如5 2 120 = 1111000 末尾连续0的个数为3。 题解 n!=xk∗byk+xk...

Link_Ray的博客 376

Codeforces Round #519 by Botan Investments F. Make It One(容斥+组合数学)

题目链接 题意 给出长度为nnn的正整数序列,要求找出一个最小的子集,使得子集中的数的gcd等于1。没有的话输出-1,否则输出子集大小。序列中的数0≤ai≤3000000 \leq a_i \leq 3000000≤ai​≤300000。 题解 暴力的做法就是从1开始枚举子集的大小,不同的子集个数2n2^n2n,肯定要超时。我们可以设dp[i][j]dp[i][j]dp[i][j]表示集合大小为i...

Link_Ray的博客 353
上一篇: 大数加法模板
下一篇: mac下mysql忘记root密码
Link_Ray
博客等级 码龄9年 44粉丝 156原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值