Run ID 作者 问题 语言 测评结果 时间 内存 代码长度 提交时间
43740 huimzhangjian 组合 C++ 通过 1 MS 252 KB 733 2024-03-21 11:37:44

Tests(1/1):


#include <iostream> using namespace std; // 找两个数的最大公约数 int gcd(int a,int b){ if(a%b==0)return b; else return gcd(b,a%b); } int a[25]; bool f[10005]; int main(){ int n; cin>>n; cin>>a[0]; int g=a[0]; f[a[0]]=1; for(int i=1;i<n;i++){ cin>>a[i]; // 找n个数的最大公约数 g=gcd(g,a[i]); // 标记a[i] f[a[i]]=1; } // n个数不能互质,则不能组合的数字有无限个 if(g!=1){ cout<<-1; return 0; } // 标记所以可能的组合 for(int i=1;i<10000;i++){ if(f[i]==1) for(int j=0;j<n;j++){ f[i+a[j]]=1; } } // 统计不可能的组合 int cnt=0; for(int i=1;i<10000;i++) if(f[i]==0)cnt++; cout<<cnt; return 0; }


测评信息: