代码如下:
#include<bits/stdc++.h>
#define int unsigned long long
using namespace std;
int n,a[66],b[51];
bool dfs(int s,int cnt,int l)
{
if(cnt==n)return s==l;
if(s==l)l=0;
for(int i=50; i>=1; i--)
{
if((b[i]==0)||i>s-l)continue;
else
{
b[i]--;
if(dfs(s,cnt+1,l+i))return false;
b[i]++;
}
}
}
signed main()
{
int sum=0,minx=0;
cin>>n;
for(int i=1; i<=n; i++)
{
cin>>a[i];
sum+=a[i];
b[a[i]]++;
if(minx<a[i])minx=a[i];
}
for(int i=minx; i<=sum; i++)
if(sum%i==0)if(dfs(i,0,0) {cout<<i;return 0;}
}