题目描述
要求找到一个正整数序列,满足序列中所有的数不超过 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;
}