Codeforces Round #236 (Div. 2) D. Upgrading Array
2014-03-18 10:44
330 查看
set..map..
质因数分解。。
质因数分解。。
#include<stdio.h> #include<string.h> #include<stdlib.h> #include<algorithm> #include<set> #include<map> using namespace std; #define inf 0x3f3f3f3f int p[5050]; int g[5050]; set<int> b; int gcd(int a,int b){ return b?gcd(b,a%b):a; } int get(int x) { int i,j; map<int,int> m; for(i=2;i*i<=x;i++) { if(x%i==0) { while(x%i==0) { m[i]++; x/=i; } } } if(x!=1) m[x]++; map<int,int>::iterator it; int ans=0; for(it=m.begin();it!=m.end();it++) { if(b.find((*it).first)!=b.end()) ans-=(*it).second; else ans+=(*it).second; } return ans; } int main() { int n,m,i,j,k; scanf("%d%d",&n,&m); for(i=0;i<n;i++) scanf("%d",&p[i]); for(i=0;i<m;i++) { scanf("%d",&k); b.insert(k); } int sum=0; for(i=0;i<n;i++) sum+=get(p[i]); g[0]=p[0]; for(i=1;i<n;i++) g[i]=gcd(g[i-1],p[i]); int h=1,t,res; for(i=n-1;i>=0;i--) { t=g[i]/h; res=get(t); if(res<0){ sum-=res*(i+1); h*=t; } } printf("%d\n",sum); //system("pause"); }
相关文章推荐
- android style小结
- Kill Processes in Linux
- startActivityForResult
- (转)Java NIO框架Mina、Netty、Grizzly介绍与对比
- iframe布局 详细用法 及缺点
- 关于Java中split方法对空字符串处理问题
- Spring mvc (四)
- gem rails安装、卸载、和使用 指定版本
- poj 3320 Jessica's Reading Problem
- CF round 236 div1
- Mac截图快捷键
- Lync Server 2013 VDI架构
- 头像上传和裁剪(uploadify+Jcrop+php)
- Oracle 11gR2 rac 的各项服务说明
- 音乐检索简介
- MyEclipse快捷键与插件大全
- Android触摸事件与点击事件的区别
- JIO:云存储成就兼容性
- 广州传智播客.Net培训之实话实说
- 解决方案:fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏