类似完全背包求方案数,再加上点数论知识,裴蜀定理。
cpp
#include<bits/stdc++.h>
using namespace std;
#define int long long
#define endl '\n'
const int N=300000;
bool f[N];
int a[120];
signed main()
{
ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
int n,n0=0,n1=0; cin>>n;
f[0]=1;
int g;
for(int i=1;i<=n;i++) cin>>a[i];
g=a[1];
for(int i=1;i<=n;i++)
{
g=__gcd(g,a[i]);
for(int j=a[i];j<N;j++)
f[j]|=f[j-a[i]];
}
int flag=0,cnt=0;
for(int i=1;i<N;i++)
if(!f[i])
cnt++;
if(g!=1){
cout<<"INF";
return 0;
}
cout<<cnt;
return 0;
}