外网题目 求调
  • 板块灌水区
  • 楼主liran0627
  • 当前回复1
  • 已保存回复1
  • 发布时间2024/7/12 20:13
  • 上次更新2024/7/12 21:35:19
查看原帖
外网题目 求调
907428
liran0627楼主2024/7/12 20:13
#include <bits/stdc++.h>
using namespace std;
int n,c1[1001],c2[1002],g[1002],zl[100000];
int main(){
		while(cin>>n){
			int sum=0;
			for(int i=0;i<=n;i++){
				c1[i]=0;
				c2[i]=0;
				cin>>g[i];
				sum+=g[i];
			}
			for(int i=0;i<=n;i++) c1[i]=1;
			for(int i=2;i<=n;i++){
				//cout<<"yzlssb"<<endl;
				for(int j=0;j<=n;j++){//cout<<"yzlssb"<<endl;
					for(int k=0;k+j<=n;k+=g[i]){
						c2[j+k]+=c1[j];
						c2[abs(j-k)]+=c1[j];
						zl[j+k]=0;//cout<<"yzlssb"<<endl;
						zl[abs(j-k)]=0;
				}
			}
			for(int j=0;j<=n;j++){
				c1[j]=c2[j];
				c2[j]=0;
			}
		}
		cout<<c1[n]<<endl;
		for(int i=0;i<sum;i++){
			if(zl[i]!=0){
				cout<<i<<" ";
			}
		}
	}
	return 0;
}
有一个天平和一些砝码,你现在想用它来对一些药品称重。

假设所有的砝码重量总和为S,请问在[1,S]范围内,有哪些重量是不能称重的。

特别说明:砝码可以放在天平的任意一端。


输入

输入包含多组测试数据。

每组测试数据首先是一个正整数N (1<=N<=100),表示有N种砝码;

接下来一行的N个整数Ai (1<=i<=N),表示砝码的重量;

其中, 1<=Ai<=100。


输出

对于每组测试数据,首先请在一行内输出一个整数M,表示有M种重量不能称出;

如果M不为0,接下来一行是M个不能称重的数量(从小到大输出)。
样例
输入
3
1 2 4
3
9 2 1
输出
0
2
4 5
2024/7/12 20:13
加载中...