CF 402-D 贪心
来源:互联网 发布:网页 字幕 滚动 js 编辑:程序博客网 时间:2024/05/16 08:41
觉得题目描述应改为 r>1
中间理解错:g是前r个数的gcd,不是一些共同因数的乘积
#include <iostream>#include <cstring>#include <cstdio>#include <algorithm>using namespace std;#define N 40003int gcd(int a, int b){ if(b==0) return a; return gcd(b, a%b);}int a[5500], b[5500], g[5500];int prime[N], isprime[N], cnt;int n,m;int calc(int num){ int res = 0; for(int j=1; j<=m & num>=b[j]; ++j) if(num%b[j] == 0) { do{ num /= b[j]; --res; }while(num%b[j] == 0); } for(int j=0; (long long)prime[j]*prime[j]<=num; ++j) if(num%prime[j] == 0) { do{ ++res; num /= prime[j]; }while(num%prime[j] == 0); } if(num>1) res++; return res;}int main (){ for(int i=2; i<N; ++i) if(!isprime[i]) { prime[cnt++] = i; for(int j=i; j<N; j+=i) isprime[j] = 1; } scanf("%d%d", &n, &m); for(int i=1; i<=n; ++i) scanf("%d", &a[i]); for(int i=1; i<=m; ++i) scanf("%d", &b[i]); g[1] = a[1]; for(int i=2; i<=n; ++i) g[i] = gcd(a[i], g[i-1]); int ans = 0; for(int i=n, di=1; i>=1; --i) { g[i] /= di; if(calc(g[i]) <= 0) di *= g[i]; a[i] /= di; ans += calc(a[i]); } printf("%d\n", ans); return 0;}
0 0
- CF 402-D 贪心
- CF 721D贪心
- CF 738D 贪心
- CF 748D 贪心
- CF 190div2 D(贪心)
- CF 515D 图,贪心
- CF 593D LCA,贪心
- CF-45D. Event Dates(贪心)
- CF D. Population Size(贪心+模拟)
- CF#310 div2 D set+pair+贪心
- cf#310-D. Case of Fugitive-贪心
- CF 637D. Running with Obstacles 贪心
- cf 721 d(优先队列+贪心)
- CF 754D 贪心 + 优先队列
- cf 729D Sea Battle 【模拟,贪心】
- CF 363D. Renting Bikes 贪心+二分
- (贪心)【CF 893D】Credit Card
- CF 215D 贪心 交罚金的问题
- Java修炼 之 基础篇(二)Java语言构成
- string类型在参数传递中如何作为引用,如何在函数外修改函数内的string类型
- 敏捷开发系列之旅 第四站(透明的Crystal水晶方法)
- 性能测试需要掌握什么
- MyReport数据导出引擎——MyReport的好帮手,支持Excel导出
- CF 402-D 贪心
- 关于多列(复合)索引使用时的一个小问题
- Android Alarm
- J2EE Web开发环境的搭建!!
- Commons DbUtis源码阅读四
- Mental ray 渲染器常用设置
- 校赛随笔
- win7下安装vs2008失败——解决方法
- properties文件中文乱码解决