解题思路:另数组全部为0,能够装出来的设为1(遍历大数组,不停的往后迭代,若b[i-a[j]]不是0,即可赋值,具体如下),最后数数
注意事项:判断公约数 哦
参考代码:
#include <iostream>
using namespace std;
#define N 100000
int a[100]={0},b[N]={0};
int gy(int a,int b)//判断公约数
{
while(a%b!=0)
{
int c=a%b;
a=b;
b=c;
}
return b;
}
int main()
{
int n;
cin>>n;
for(int i=0;i<n;i++) cin>>a[i];
if(n==1)//判断n=1
{
if(a[0]!=1) cout<<"INF"<<endl;
else cout<<0<<endl;
return 0;
}
int gys=a[0];
for(int i=1;i<n;i++)
{
gys=gy(gys,a[i]);
}
if(gys!=1)//公约数不为1,直接输出无限
{
cout<<"INF"<<endl;
return 0;
}
b[0]=1;
for(int j=0;j<n;j++)//核心代码
{
for(int i=a[j];i<N;i++)
{
if(b[i-a[j]]) b[i]=1;//不停的往后迭代,若b[i-a[j]]不是0,即可赋值
}
}
int sum=0;
for(int i=1;i<N;i++)//数0
{
if(b[i]==0)
sum++;
}
cout<<sum<<endl;
return 0;
}
0.0分
0 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复