CodeForces 1047C Enlarge GCD(数论)题解
2024-09-01 11:38:50
题意: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;
}
最新文章
- 使用ViewPager+Fragment实现选项卡切换效果
- guava学习--Function、Predicate
- 牛客网程序员面试金典:1.2——原串翻转(java实现)
- POJ 3384	 Feng Shui --直线切平面
- ASP.NET技巧:教你制做Web实时进度条
- JVM学习总结二——垃圾回收算法
- HDU2859 Phalanx 简单DP
- equal与==区别
- Arduino库函数中文说明
- 一览js模块化:从CommonJS到ES6
- GitHub:Awesome-Hacking(黑客技能列表-恶意代码)
- Linear Kingdom Races CodeForces - 115E (线段树优化dp)
- JMeter出现“the target server failed to respond“的解决办法
- JavaScript if(x),==和===解析(翻译整理)
- Mac下思维导图Xmind使用入门
- 微信小游戏 lodash 问题
- rook
- HandlerThread使用
- docker 私有registry 配置
- sql cast函数
热门文章
- Wi-Fi IoT套件连PCF8563实现电子钟功能
- 深度学习论文翻译解析(十七):MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications
- (02)-Python3之--列表(list)操作
- MySQL调优性能监控之show profile
- 一键配置 github 可用的 hosts
- Serverless对研发效能的变革和创新 云托管和Serverless应用差异
- pickle — Python object serialization
- 京东零售mockRpc实践
- chmod a+w . 权限控制 su、sudo 修改文件所有者和文件所在组 添加用户到sudoer列表中 当前用户信息
- css选择器有哪些,选择器的权重的优先级