【结论】看错题的产物

链接

Luogu T201840

题目描述

给出一个长度为n的数组, 要在其中选取一个子序列,使得这个子序列的最大公因数 * 子序列长度最大

思路

设gcd为d,则子序列可以表示为
d x 1 , d x 2 , d x 3... d x k dx1, dx2, dx3... dxk dx1,dx2,dx3...dxk
可知此时的答案为d * k
可知d一定小于等于最小值,所以我们可以直接找最大值输出

代码

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#define ll long long

using namespace std;

const ll mo = 8681123;
ll ans, n, a[3220005];

int main()
{
    
    
	scanf("%lld", &n);
	for(int i = 1; i <= n; ++i)
		scanf("%lld", &a[i]), ans = max(ans, a[i]);
	printf("%lld", ans % mo);
	return 0;
}

猜你喜欢

转载自blog.csdn.net/LTH060226/article/details/120649336