2744题30分疑惑……
  • 板块学术版
  • 楼主myz123
  • 当前回复1
  • 已保存回复1
  • 发布时间2023/5/14 17:41
  • 上次更新2023/10/23 15:44:47
查看原帖
2744题30分疑惑……
766167
myz123楼主2023/5/14 17:41
#include<bits/stdc++.h>
using namespace std;
int n,m,k,sum,a[105],b[105],c[105],d[105],e[105];
bool f[10000005];
int main()
{
	//freopen("get.in","r",stdin);
	//freopen("get.out","w",stdout);
	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	cin>>m>>n;
	for(int i=1;i<=n;i++)
	{
		cin>>a[i];
	}
	for(int i=1;i<=n;i++)
	{
		for(int j=a[i];j<=m;j++)
		{
			if(b[j-a[i]]!=0)
			{
				b[j]=b[j-a[i]]+1;
				c[j]=a[i];
				d[j]=j-a[i];
			}
			else if(j%a[i]==0&&c[j]==0)
			{
				b[j]=1;
				c[j]=a[i];
				d[j]=0;
			}
			if(b[m]!=0)
			{
				break;
			}
		}
	}
	k=m;
	for(int i=1;i<=b[m];i++)
	{
		e[i]=c[k];
		k=d[k];
	}
	for(int i=b[m];i>=1;i--)
	{
		if(f[e[i]]==0)
		{
			f[e[i]]=1;
			sum++;
		}
	}
	cout<<sum<<" ";
	memset(f,0,sizeof(f));
	for(int i=b[m];i>=1;i--)
	{
		if(f[e[i]]==0)
		{
			f[e[i]]=1;
			cout<<e[i]<<" ";
		}
	}
	return 0;
}

大佬求解

2023/5/14 17:41
加载中...