NOIP模拟 洛阳怀(质因数分解)
传送门
【题目分析】
用正确的做法竟然只有45pts。。。。。好吧完全没想到1e9怎么弄qwq
显然,我们对所有的a[i]进行质因数分解,得到,根据定义式,如果pi为“好质数”,那么会做出qi的贡献,否则做出-qi的贡献,用这个办法就可以计算出一个数的贡献。
考虑前缀gcd单降不增,那么我们从最后一个向前扫,如果前缀gcd产生了正的贡献,显然是不减更优,反之减去。
最后统计一下答案就行了(或者统计初始答案然后进行修改)
【代码~】
#include<bits/stdc++.h>
#include<tr1/unordered_map>
using namespace std;
const int MAXP=1e5+10;
const int MAXN=2e3+10;int n,m,ans;
int a[MAXN],bad[MAXN];
int gc[MAXN];
bitset<MAXP> prime;
int pri[MAXP],cnt;
tr1::unordered_map<int,int> isbad;int Read()
{int i=0,f=1;char c;for(c=getchar();(c>'9'||c<'0')&&c!='-';c=getchar());if(c=='-')f=-1,c=getchar();for(;c>='0'&&c<='9';c=getchar())i=(i<<3)+(i<<1)+c-'0';return i*f;
}int gcd(int a,int b)
{return a%b?gcd(b,a%b):b;
}void pre()
{prime[1]=1;for(int i=2;i<=MAXP;++i){if(!prime[i])pri[++cnt]=i;for(int j=1;j<=cnt&&pri[j]*i<=MAXP;++j){pri[i*pri[j]]=1;if(i%pri[j]==0)break;}}
}int judge(int x)
{if(x==1)return 0;int score=0;for(int i=1;i<=cnt&&pri[i]*pri[i]<=x;++i){if(x%pri[i]==0){if(isbad[pri[i]]){while(x&&x%pri[i]==0)score--,x/=pri[i];}else{while(x&&x%pri[i]==0)score++,x/=pri[i];}}}if(x!=1){if(isbad[x])score--;elsescore++;}return score;
}int main()
{pre();n=Read(),m=Read();for(int i=1;i<=n;++i)a[i]=Read();for(int i=1;i<=m;++i)bad[i]=Read(),isbad[bad[i]]=1;for(int i=1;i<=n;++i)ans+=judge(a[i]);gc[1]=a[1];for(int i=2;i<=n;++i)gc[i]=gcd(gc[i-1],a[i]);int now=1;for(int i=n;i>=1;--i){gc[i]/=now;int sco=judge(gc[i]);if(sco<0){ans-=sco*i;now*=gc[i];}}cout<<ans;return 0;
}
转载于:https://www.cnblogs.com/Ishtar/p/10010748.html
NOIP模拟 洛阳怀(质因数分解)相关推荐
- NOIP模拟 整数划分(数论,质因数分解,状压DP)
这道题竟然暴力能拿到90分,大佬orzorzorz%%%%%%%%%%% --------------------------分割线(下面是正解)--------------------------- ...
- 1313 质因数分解 2012年NOIP全国联赛普及组
1313 质因数分解 2012年NOIP全国联赛普及组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 青铜 Bronze 题目描述 Description 已知正整数 n是两个不同 ...
- NOIP 模拟赛 长寿花 题解
NOIP 模拟赛 长寿花 题解 要放 \(n\) 层物品,第 \(i\) 层有 \(a_i\) 个位置放物品,物品有 \(m\) 中颜色,有约束条件: 同一层两个相邻物品颜色不能相同. 相邻两层颜色集 ...
- java 判断一个数是正整数_【Java】P1075 质因数分解—关于数学方法在解题中的运用—(OJ:洛谷)...
点击上方"蓝字"关注我们了解更多算法思路01题目 题目来源:洛谷OJ 题目链接: https://www.luogu.com.cn/ 题目描述 已知正整数n是两个不同的质数的乘积, ...
- 1313 质因数分解
1313 质因数分解 2012年NOIP全国联赛普及组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 青铜 Bronze 题目描述 Description 已知正整数 n是两个不同 ...
- 求一个数的所有因数+质因数分解【数论】
先附上所有因数的求法: 我的做法:是今天误打误撞写出来的: http://exam.upc.edu.cn/problem.php?id=5062 然后,我上网找居然没有人写一个高效一点的,我这个做法其 ...
- 1624 Violet 5 樱花(Bzoj2721 LOJ10202 LUOGU1445 提高+/省选-) 交叉相乘 阶乘质因数分解技巧 约数个数计算
总目录 在线测评地址(ybt) 在线测评地址(LOJ) 在线测评地址(LUOGU) 1.交叉相乘 阶乘质因数分解技巧 约数个数计算 ybt 通过 测试点 结果 内存 时间 测试点1 答案正确 604K ...
- 洛谷刷题:明明的随机数、质因数分解、不高兴的津津、津津对的储存计划和车厢重组
记录洛谷刷题过程QAQ 一. [NOIP2006 普及组] 明明的随机数 题目描述 明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了 N N N 个 1 1 1 到 1 ...
- 素数、最大公约数、最下公倍数、质因数分解
2013-08-18 11:20:43 素数.最大公约数.最下公倍数.质因数分解都是与素数相关的,解决了素数的问题,其他的都可以此为基础求解. 小结: 求1到n之间的素数的基本方法是通过遍历2到sqr ...
最新文章
- (邓爱萍)类 对象 例题
- NOIP 2018 普及组 解题报告
- bat窗口大小设置_Tomcat的JVM和连接数设置
- Python查看、修改pip install 默认使用的pip库
- Vue封装下拉框组件时,为document绑定原生事件addEventlistener(click“),切换页面之后事件还未被摧毁...
- 正面刚谷歌苹果,diss了BAT及友商,商汤科技说自己是一只“黑羊”
- 思科华为双向的chap
- L1- 017——024
- 用友t+畅捷通使用方法_【财务人员必看干货】用友财务软件使用方法和快捷键大全!...
- 何为自动化测试?(纯干货)
- 用计算机绘制滴定曲线,利用Excel系统绘制酸碱滴定曲线
- java单继承多实现_单继承,多实现
- python实现打电话功能_使用python代码调用三汇语音卡硬件拨打电话
- resolution will not be reattempted until the update interval of XXX has elapsed or updates are force
- 啊哈算法---水管工游戏
- addEventListener 的第三个参数capture、once、passive
- .NET 开源开发项目【翻译】
- HashMap集合常见方法
- Windows Installer Cleanup下载安装和使用方法
- 搜索支持html5的浏览器,HTML5的浏览器支持情况
热门文章
- IOS去除文件后缀名
- notepad html5 mac,用notepad++将DPL格式转为通用格式
- 论文: 基于智能优化算法的测试数据生成综述
- 一个为华为ICT网络赛道准备的小白
- 第2节 物理层physical layer——如网线和光纤等相关知识
- Java-什么是软件?
- oracle基础|oracle的认知|Select用法详解
- python开发跟淘宝有关联微_基于Python的Apriori和FP-growth关联分析算法分析淘宝用户购物关联度...
- JIL Widget开发入门
- dnf服务器未响应怎么解决方法,科技知识:DNF地下城与勇士程序未响应怎么办——一招搞定...