解题思路:另数组全部为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二级辅导-阶乘数列 (C语言代码)浏览:688 |
WU-格式化数据输出 (C++代码)浏览:1194 |
循环入门练习5 (C语言代码)浏览:830 |
C语言程序设计教程(第三版)课后习题10.2 (C语言代码)浏览:679 |
字符串的输入输出处理 (C语言代码)浏览:985 |
1134题解(求分析)浏览:722 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:543 |
A+B for Input-Output Practice (I) (C语言代码)浏览:570 |
简单的a+b (C语言代码)浏览:448 |
2003年秋浙江省计算机等级考试二级C 编程题(1) (C语言代码)浏览:1317 |