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;

    }
}

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

时间: 2024-10-13 14:26:24

CF#511-C Enlarge GCD(gcd)的相关文章

iOS多线程开发之GCD(下篇)

上篇和中篇讲解了什么是GCD,如何使用GCD,这篇文章将讲解使用GCD中将遇到的死锁问题.有兴趣的朋友可以回顾<iOS多线程开发之GCD(上篇)>和<iOS多线程开发之GCD(中篇)>. 言归正传,我们首先来回顾下死锁,所谓死锁: 是指两个或两个以上的进程(线程)在执行过程中,因争夺资源(如数据源,内存等,变量不是资源)而造成的一种互相等待的现象,若无外部处理作用,它们都将无限等待下去. 死锁形成的原因: 系统资源不足 进程(线程)推进的顺序不恰当: 资源分配不当 死锁形成的条件:

CF 295E Yaroslav and Points(Splay)

题目大意: 两个操作 1 id op  把id的位置+op 2 id op  查询在[id,op]之间的所有的数的差 思路: 关键是pushup函数. 自己退一下会发现,跟区间的总和,区间的节点个数有关. 比如如果左区间是 1 2 的话 右区间来一个 9 那么 就要加上 9-1+9-2 #include <cstdio> #include <iostream> #include <algorithm> #include <cstring> #include

iOS多线程开发之离不开的GCD(上篇)

一.GCD基本概念 GCD 全称Grand Central Dispatch(大中枢队列调度),是一套低层API,提供了?种新的方法来进?并发程序编写.从基本功能上讲,GCD有点像NSOperationQueue,他们都允许程序将任务切分为多个单一任务,然后提交??作队列来并发的或者串?的执行.GCD是C实现,?NSOpertionQueue更底层更高效,并且它不是Cocoa框架的一部分 并发任务会像NSOperationQueue那样基于系统负载来合适地并发进?,而串?行队列同一时间只执行单一

深入理解 GCD(一)

原文出处: Derek Selander   译文出处:nixzhu (@nixzhu)   欢迎分享原创到伯乐头条 虽然 GCD 已经出现过一段时间了,但不是每个人都明了其主要内容.这是可以理解的:并发一直很棘手,而 GCD 是基于 C 的 API ,它们就像一组尖锐的棱角戳进 Objective-C 的平滑世界.我们将分两个部分的教程来深入学习 GCD . 在这两部分的系列中,第一个部分的将解释 GCD 是做什么的,并从许多基本的 GCD 函数中找出几个来展示.在第二部分,你将学到几个 GC

多线程之GCD(一)

Grand Central Dispatch简称(GCD)是由苹果公司开发的技术,是一个非常好的用于多核设备的解决方案.GCD核心在于两个概念: 队列:队列负责管理开发者提交的任务,GCD队列始终以FIFO(先进先出)的方式来处理任务-----但由于处理执行的时间不同,所以先处理的任务并不一定先结束.队列既可以是串行队列,也可以是并发队列,串行队列每次只处理一个任务,必须前一个任务执行完成后,才能执行下一个任务:并发队列则可同时处理多个任务,因此可以多个任务并发处理. 队列底层会维护一个线程池来

UVa 1642 - Magical GCD(数论)

链接: https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=4517 题意: 输入一个n(n≤100000)个元素的正整数序列,求一个连续子序列,使得该序列中所有元素的最大公约数与序列长度的乘积最大.例如,5个元素的序列30, 60, 20, 20, 20的最优解为{60, 20, 20, 20},乘积为gcd(60,20,20,20)*4=8

HDU 5726 GCD(DP)

[题目链接] http://acm.hdu.edu.cn/showproblem.php?pid=5726 [题目大意] 给出数列An,对于询问的区间[L,R],求出区间内数的GCD值,并且求出GCD值与其相等的区间总数 [题解] 首先,固定一个区间的右端点,利用GCD的递减性质,可以求出GCD相等的区间左端点的范围,将其范围的左右端点保存下来,同时,对于每个新产生的区间,以其GCD值为下标的MAP值+1,最后对于每个询问,在其右端点保存的范围中查找,获得其GCD值,同时在MAP中获取该GCD值

Codeforces Round #511 (Div. 2) C. Enlarge GCD (质因数)

题目 题意: 给你n个数a[1]...a[n],可以得到这n个数的最大公约数, 现在要求你在n个数中 尽量少删除数,使得被删之后的数组a的最大公约数比原来的大. 如果要删的数小于n,就输出要删的数的个数, 否则输出 -1 . 思路: 设原来的最大公约数为 g, 然后a[1]...a[n]都除以g ,得到的新的a[1]...a[n],此时它们的最大公约数一定是1 . 设除以g之后的数组a为: 1    2    3     6      8   10  则它们的质因数分别是:  1    2   

CodeForces 1047C Enlarge GCD(数论)题解

题意:n个数的gcd是k,要你删掉最少的数使得删完后的数组的gcd > k 思路:先求出k,然后每个数除以k.然后找出出现次数最多的质因数即可. 代码: #include<cmath> #include<set> #include<map> #include<queue> #include<cstdio> #include<vector> #include<cstring> #include <iostream