传送门

【题目分析】

用正确的做法竟然只有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模拟 洛阳怀(质因数分解)相关推荐

  1. NOIP模拟 整数划分(数论,质因数分解,状压DP)

    这道题竟然暴力能拿到90分,大佬orzorzorz%%%%%%%%%%% --------------------------分割线(下面是正解)--------------------------- ...

  2. 1313 质因数分解 2012年NOIP全国联赛普及组

    1313 质因数分解 2012年NOIP全国联赛普及组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 青铜 Bronze 题目描述 Description 已知正整数 n是两个不同 ...

  3. NOIP 模拟赛 长寿花 题解

    NOIP 模拟赛 长寿花 题解 要放 \(n\) 层物品,第 \(i\) 层有 \(a_i\) 个位置放物品,物品有 \(m\) 中颜色,有约束条件: 同一层两个相邻物品颜色不能相同. 相邻两层颜色集 ...

  4. java 判断一个数是正整数_【Java】P1075 质因数分解—关于数学方法在解题中的运用—(OJ:洛谷)...

    点击上方"蓝字"关注我们了解更多算法思路01题目 题目来源:洛谷OJ 题目链接: https://www.luogu.com.cn/ 题目描述 已知正整数n是两个不同的质数的乘积, ...

  5. 1313 质因数分解

    1313 质因数分解 2012年NOIP全国联赛普及组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 青铜 Bronze 题目描述 Description 已知正整数 n是两个不同 ...

  6. 求一个数的所有因数+质因数分解【数论】

    先附上所有因数的求法: 我的做法:是今天误打误撞写出来的: http://exam.upc.edu.cn/problem.php?id=5062 然后,我上网找居然没有人写一个高效一点的,我这个做法其 ...

  7. 1624 Violet 5 樱花(Bzoj2721 LOJ10202 LUOGU1445 提高+/省选-) 交叉相乘 阶乘质因数分解技巧 约数个数计算

    总目录 在线测评地址(ybt) 在线测评地址(LOJ) 在线测评地址(LUOGU) 1.交叉相乘 阶乘质因数分解技巧 约数个数计算 ybt 通过 测试点 结果 内存 时间 测试点1 答案正确 604K ...

  8. 洛谷刷题:明明的随机数、质因数分解、不高兴的津津、津津对的储存计划和车厢重组

    记录洛谷刷题过程QAQ 一. [NOIP2006 普及组] 明明的随机数 题目描述 明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了 N N N 个 1 1 1 到 1 ...

  9. 素数、最大公约数、最下公倍数、质因数分解

    2013-08-18 11:20:43 素数.最大公约数.最下公倍数.质因数分解都是与素数相关的,解决了素数的问题,其他的都可以此为基础求解. 小结: 求1到n之间的素数的基本方法是通过遍历2到sqr ...

最新文章

  1. (邓爱萍)类 对象 例题
  2. NOIP 2018 普及组 解题报告
  3. bat窗口大小设置_Tomcat的JVM和连接数设置
  4. Python查看、修改pip install 默认使用的pip库
  5. Vue封装下拉框组件时,为document绑定原生事件addEventlistener(click“),切换页面之后事件还未被摧毁...
  6. 正面刚谷歌苹果,diss了BAT及友商,商汤科技说自己是一只“黑羊”
  7. 思科华为双向的chap
  8. L1- 017——024
  9. 用友t+畅捷通使用方法_【财务人员必看干货】用友财务软件使用方法和快捷键大全!...
  10. 何为自动化测试?(纯干货)
  11. 用计算机绘制滴定曲线,利用Excel系统绘制酸碱滴定曲线
  12. java单继承多实现_单继承,多实现
  13. python实现打电话功能_使用python代码调用三汇语音卡硬件拨打电话
  14. resolution will not be reattempted until the update interval of XXX has elapsed or updates are force
  15. 啊哈算法---水管工游戏
  16. addEventListener 的第三个参数capture、once、passive
  17. .NET 开源开发项目【翻译】
  18. HashMap集合常见方法
  19. Windows Installer Cleanup下载安装和使用方法
  20. 搜索支持html5的浏览器,HTML5的浏览器支持情况

热门文章

  1. IOS去除文件后缀名
  2. notepad html5 mac,用notepad++将DPL格式转为通用格式
  3. 论文: 基于智能优化算法的测试数据生成综述
  4. 一个为华为ICT网络赛道准备的小白
  5. 第2节 物理层physical layer——如网线和光纤等相关知识
  6. Java-什么是软件?
  7. oracle基础|oracle的认知|Select用法详解
  8. python开发跟淘宝有关联微_基于Python的Apriori和FP-growth关联分析算法分析淘宝用户购物关联度...
  9. JIL Widget开发入门
  10. dnf服务器未响应怎么解决方法,科技知识:DNF地下城与勇士程序未响应怎么办——一招搞定...