为什么题解全是分解质因数(虽然分解质因数也非常水)
#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;
}
不过好像是等效的