题意:n个数的gcd是k,要你删掉最少的数使得删完后的数组的gcd > k

思路:先求出k,然后每个数除以k。然后找出出现次数最多的质因数即可。

代码:

#include<cmath>
#include<set>
#include<map>
#include<queue>
#include<cstdio>
#include<vector>
#include<cstring>
#include <iostream>
#include<algorithm>
#include<unordered_map>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
const int maxn = 3e5 + 10;
const int M = 1.5 * 1e7 + 10;
const ull seed = 131;
const int INF = 0x3f3f3f3f;
const int MOD = 1e4 + 7;
int gcd(int a, int b){
return b == 0? a : gcd(b, a % b);
}
int a[maxn];
int p[4000], prime[4000], pn;
int num[M];
void init(){
pn = 0;
memset(p, 0, sizeof(p));
for(int i = 2; i < 4000; i++){
if(!p[i]){
prime[pn++] = i;
}
for(ll j = 0; j < pn && i * prime[j] < 4000; j++){
p[i * prime[j]] = 1;
if(i % prime[j] == 0) continue;
}
}
// printf("%d\n", pn);
}
int main(){
int n, need;
init();
scanf("%d", &n);
memset(num, 0, sizeof(num));
for(int i = 1; i <= n; i++){
scanf("%d", &a[i]);
if(i == 1) need = a[i];
else need = gcd(need, a[i]);
}
for(int i = 1 ; i <= n; i++) a[i] /= need;
int ans = -1;
for(int i = 1; i <= n; i++){
for(int j = 0; j < pn && prime[j] * prime[j] <= a[i]; j++){
if(a[i] % prime[j] == 0){
num[prime[j]]++;
ans = max(ans, num[prime[j]]);
while(a[i] % prime[j] == 0) a[i] /= prime[j];
}
}
if(a[i] > 1){
num[a[i]]++;
ans = max(ans, num[a[i]]);
}
}
if(ans == -1) printf("%d\n", ans);
else printf("%d\n", n - ans);
return 0;
}

最新文章

  1. 使用ViewPager+Fragment实现选项卡切换效果
  2. guava学习--Function、Predicate
  3. 牛客网程序员面试金典:1.2——原串翻转(java实现)
  4. POJ 3384 Feng Shui --直线切平面
  5. ASP.NET技巧:教你制做Web实时进度条
  6. JVM学习总结二——垃圾回收算法
  7. HDU2859 Phalanx 简单DP
  8. equal与==区别
  9. Arduino库函数中文说明
  10. 一览js模块化:从CommonJS到ES6
  11. GitHub:Awesome-Hacking(黑客技能列表-恶意代码)
  12. Linear Kingdom Races CodeForces - 115E (线段树优化dp)
  13. JMeter出现“the target server failed to respond“的解决办法
  14. JavaScript if(x),==和===解析(翻译整理)
  15. Mac下思维导图Xmind使用入门
  16. 微信小游戏 lodash 问题
  17. rook
  18. HandlerThread使用
  19. docker 私有registry 配置
  20. sql cast函数

热门文章

  1. Wi-Fi IoT套件连PCF8563实现电子钟功能
  2. 深度学习论文翻译解析(十七):MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications
  3. (02)-Python3之--列表(list)操作
  4. MySQL调优性能监控之show profile
  5. 一键配置 github 可用的 hosts
  6. Serverless对研发效能的变革和创新 云托管和Serverless应用差异
  7. pickle — Python object serialization
  8. 京东零售mockRpc实践
  9. chmod a+w . 权限控制 su、sudo 修改文件所有者和文件所在组 添加用户到sudoer列表中 当前用户信息
  10. css选择器有哪些,选择器的权重的优先级