bdfz_2024_summer/day12/U466180/U466180.cpp

55 lines
1.0 KiB
C++
Raw Normal View History

2024-08-14 08:45:04 +00:00
#include <iostream>
#include <vector>
#include <cmath>
#include <algorithm>
2024-08-14 03:47:41 +00:00
2024-08-14 00:19:09 +00:00
using namespace std;
2024-08-14 08:45:04 +00:00
const int MAX_N = 1000;
const int MAX_A = 1e9;
vector<int> sieve(int limit) {
vector<bool> is_prime(limit + 1, true);
vector<int> primes;
is_prime[0] = is_prime[1] = false;
for (int i = 2; i <= limit; ++i) {
if (is_prime[i]) {
primes.push_back(i);
for (int j = i * 2; j <= limit; j += i) {
is_prime[j] = false;
2024-08-14 07:13:04 +00:00
}
}
2024-08-14 01:09:21 +00:00
}
2024-08-14 08:45:04 +00:00
return primes;
}
int main() {
int n;
cin >> n;
vector<int> a(n);
for (int i = 0; i < n; ++i) {
cin >> a[i];
2024-08-14 01:09:21 +00:00
}
2024-08-14 08:45:04 +00:00
int sqrt_max_a = sqrt(MAX_A);
vector<int> primes = sieve(sqrt_max_a);
int max_sum = 0;
for (int p : primes) {
int current_sum = 0;
for (int i = 0; i < n; ++i) {
if (a[i] % p == 0) {
current_sum += a[i];
}
}
max_sum = max(max_sum, current_sum);
2024-08-14 01:09:21 +00:00
}
2024-08-14 08:45:04 +00:00
cout << max_sum << endl;
return 0;
}