zoukankan      html  css  js  c++  java
  • 最大mod值(暴力枚举+二分)

    1421 最大MOD值

    有一个a数组,里面有n个整数。现在要从中找到两个数字(可以是同一个) ai,aj,使得 ai mod aj 最大并且 ai  aj

     

    输入

    单组测试数据。
    第一行包含一个整数n,表示数组a的大小。(1 ≤ n ≤ 2*10^5)
    第二行有n个用空格分开的整数ai (1 ≤ ai ≤ 10^6)。

    输出

    输出一个整数代表最大的mod值。

    输入样例

    3
    3 4 5

    输出样例

    2


    这个题一看复杂度,没有想到是暴力,结果还挺暴力
    就是n*log(n)*(n的调和级数)的复杂度
    就是对于每一个a[i]的倍数,然后再二分
    #include<iostream>
    #include<algorithm>
    using namespace std;
    const int maxn=5e6+100;
    int a[maxn];
    int main(){
        int n;
        cin>>n;
        for(int i=1;i<=n;i++){
            cin>>a[i];
        }
        sort(a+1,a+n+1);
        n=unique(a+1,a+n+1)-(a+1);
        int ma=0;
        for(int i=1;i<=n;i++){
            for(int j=(a[i]<<1);j<=a[n];j+=a[i]){//枚举它的倍数
                int p=lower_bound(a+1,a+n+1,j)-a;//大于它的倍数的下标p
                if(p>i){
                    ma=max(ma,a[p-1]%a[i]);//a[p]%a[i]是最大的    
                }
            } 
            ma=max(ma,a[n]%a[i]);
        }
        cout<<ma<<endl;
    }


  • 相关阅读:
    struts2--OGNL
    struts2--通配符映射
    struts2--action请求与Action类
    mabatis--查询缓存
    mabatis--动态sql
    JS之正则表达式
    CSS样式表之background背景
    CSS样式表之常用文本属性
    CSS样式之选择器
    CSS样式之连接方式
  • 原文地址:https://www.cnblogs.com/lipu123/p/14727198.html
Copyright © 2011-2022 走看看