zoukankan      html  css  js  c++  java
  • E. Max Gcd

    单点时限: 2.0 sec

    内存限制: 512 MB

    一个数组a,现在你需要删除某一项使得它们的gcd最大,求出这个最大值。

    输入格式

    第一行输入一个正整数n,表示数组的大小,接下来一行n个数,第i个数为ai(2n105,1ai109)

    输出格式

    输出删除掉某个数以后的gcd的最大值。

    样例

    input
    4
    2 4 8 1
    
    output
    2
    
    input
    4
    1 2 3 4
    
    output
    1
    

    提示

    样例一:删除第四个元素后,2,4,8的最大公因子为2。
    样例二:无论删除哪一个,最大公因子都为1。

     
    #include<iostream>
    #include<algorithm>
    #define N 100010
    using namespace std;
    typedef long long ll;
    
    ll arr[N];
    ll pre[N]={0},od[N]={0};//前缀与后缀 
    int main(){
        
        int n;
        cin>>n;
        
        for(int i=1;i<=n;i++){
            cin>>arr[i];
        }
        
        pre[1]=arr[1]; 
        od[n]=arr[n];
        
        for(int i=2;i<=n;i++){
            pre[i]=__gcd(pre[i-1],arr[i]);//前缀gcd
        }
        
        for(int i=n-1;i>0;i--){
            od[i]=__gcd(od[i+1],arr[i]);//后缀gcd
        }
        
        ll max1=0;
        ll p;
        for(int i=1;i<=n;i++){
            if(i==1){
                p=od[i+1];
            }
            else {
                p=__gcd(pre[i-1],od[i+1]);//pre[i-1]指的是前i-1个个数的gcd,od[i+1]指的是从i+1到第N个数的gcd
                if(p>max1){
                max1=p; 
                }
            }
        }
        cout<<max1<<endl;
        return 0;
    } 
  • 相关阅读:
    PyQt5库结构
    PyQt5
    QObject
    os.listdir()
    os.getcwd()
    os.chdir()
    os.access()
    __name__
    php 学习笔记之关于时区的那点事
    php 学习笔记之搭建开发环境(mac版)
  • 原文地址:https://www.cnblogs.com/Accepting/p/11285496.html
Copyright © 2011-2022 走看看