dfs也可以2ms/点
查看原帖
dfs也可以2ms/点
414224
zxyluogu楼主2021/11/27 19:58

为什么题解全是分解质因数(虽然分解质因数也非常水)

#include<cstdio>
int n,k,a[1001],c,f=1;
void dfs(int m,int s)
{
	if(s<0||c>1000) return;//越界就结束
	if(m==1&&s==0)//找到就结束
	{
		printf("%d\n",c);
    	for(int i=1;i<=c;i++) printf("%d ",a[i]);
    	f=0;
		return;
	}
	for(int i=1;i<=m;i++)
	{
		if(m%i==0)
		{
			a[++c]=i;
			if(f) dfs(m/i,s-i);
			c--;
		}
	}
}
int main()
{
    scanf("%d%d",&n,&k);
    dfs(n,k);
    if(f) printf("-1\n");
    return 0;
}

不过好像是等效的

2021/11/27 19:58
加载中...