萌新求助,这里为啥max不能用了
查看原帖
萌新求助,这里为啥max不能用了
326382
Thomas_Cat楼主2020/6/7 07:02

rt。

#include<bits/stdc++.h>
using namespace std;
int main(){
    long long n,flag[1000001],MAX=-1;
    cin>>n;
    for(int i=1;i<=n;i++){//通过循环输入
        int tmp;//因为输入的数据后面不会用到,直接用tmp输入即可
        cin>>tmp;
        flag[tmp]++;//标记如果是这个数的倍数的话flag[tmp]++
        MAX=max(MAX,tmp);//找到最大值方便之后用
    }
    int sum=0,MAXN=-1;
    for(int x=1;x<=MAX;x++){//循环暴力枚举x即可
        //这个时候sum注意清零,因为本人在这里卡了好多次
        sum=0;
        for(int i=x;i<=MAX;i+=x)//因为我们这里是循环加到max,所以写成这样的形式、
            sum+=flag[i];//这里循环加上所有到max的倍数
        if(sum>1)//特判如果sum大于1
            MAXN=max(sum*x,MAX);//判断大小,找到最大
    }
    cout<<MAXN;
    //输出最大值
    return 0;    
}
2020/6/7 07:02
加载中...