CF#511-C Enlarge GCD(gcd)
Posted tianwell
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CF#511-C Enlarge GCD(gcd)相关的知识,希望对你有一定的参考价值。
题意:给你一个序列,然后求删除几个数之后整个序列的最大公约数增大
思路:我们首先要求出这个公共的gcd,然后要使gcd增大我们可以尝试对增加gcd并判断是否为存在某个数为该数的gcd
同时统计个数,为公共gcd最大的即为最后所求的值。(增加上限就是到最大的那个数)
范围为1~1e5,arr[i]为1.5e7
完整代码:
#include <cstdio> #include <cstring> #include <cmath> #include <algorithm> #include <iostream> using namespace std; int arr[maxn]; int gcd(int a,int b) return b==0?a:gcd(b,a%b); int main() int n; while(cin>>n) for(int i =0 ;i<n;i++) cin>>arr[i]; sort(arr,arr+n); int g = arr[0]; for(int i = 1;i<n;i++) g = gcd(arr[i],g); int ans = 0; int cont; for(int j = g;j<=arr[n-1];j++) cont = 0; for(int k = 0;k<n;k++) if(arr[i]%g) continue; else cont++; ans = max(ans,cont); cout<<n-ans<<endl;
以上是关于CF#511-C Enlarge GCD(gcd)的主要内容,如果未能解决你的问题,请参考以下文章
CodeForces 1047C Enlarge GCD(数论)题解
C. Enlarge GCD Codeforces Round #511 (Div. 2)数学
Codeforces Round #511 (Div. 2)-C - Enlarge GCD (素数筛)