题目:https://codeforces.com/contest/1113/problem/B
分析:刚开始是找最大的合数,将合数的因子找出来,在枚举每一个因子来更新最小值,但是一直过不了,看别人说暴力,就用暴力了;枚举每一个数,肯定是最小的增大。
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <algorithm>
using namespace std;
const int maxn = 5e4+5;
const int INF = 0x3f3f3f3f;
int a[maxn];
int main()
{
int n;
while(cin >> n)
{
memset(a,0,sizeof(a));
int sum = 0;
for(int i = 0;i < n;i ++)
{
cin >> a[i];
sum += a[i];
}
int ans = sum;
sort(a,a + n);
for(int i = 1;i < n;i ++)
{
for(int j = 2;j < a[i];j ++)
{
if(a[i] % j == 0)
ans = min(ans,sum - a[i] - a[0] + a[0] * j + a[i] / j);
}
}
cout << ans << endl;
}
return 0;
}