题目描述

要求找到一个正整数序列,满足序列中所有的数不超过 n,序列长度为 m,且除了第一个数外,所有的数都能被前一个数整除(即是前一个数的倍数)。
我们想要知道这样的序列都有哪些,输出所有满足要求的序列。

【输入格式】

输入共 1 行:
第 1 行,两个正整数 n,m。

【输出格式】

输出包括多行:
按字典序从小到大,每行输出一个满足要求的序列,数与数之间用空格分隔。

#include <iostream>
using namespace std;

long long n, m, a[35];

void dfs(int step, int last)
{
	if (step > m)
	{
		for (int i = 1; i <= m; i++)
		{
			cout << a[i] << " ";
		}
		cout << endl;
		return;
	}
	
	for (int i = last; i <= n; i++)
	{
		if (i % last == 0)
		{
			a[step] = i;
			dfs(step + 1, i);
		}
	}
}

int main()
{
	cin >> n >> m;
	dfs(1, 1);
	return 0;
}