码迷,mamicode.com
首页 > 其他好文 > 详细

CF#511-C Enlarge GCD(gcd)

时间:2019-08-08 13:01:56      阅读:85      评论:0      收藏:0      [点我收藏+]

标签:out   mat   names   col   判断   cin   clu   ==   ring   

题意:给你一个序列,然后求删除几个数之后整个序列的最大公约数增大
思路:我们首先要求出这个公共的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)

标签:out   mat   names   col   判断   cin   clu   ==   ring   

原文地址:https://www.cnblogs.com/Tianwell/p/11320374.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!