倍数序列
时间限制:1s
内存限制:128M
开始编程
题目描述
【题目描述】
要求找到一个正整数序列,满足序列中所有的数不超过nn,序列长度为mm,且除了第一个数外,所有的数都能被前一个数整除(即是前一个数的倍数)。
我们想要知道这样的序列都有哪些,输出所有满足要求的序列。
输入格式
第一行,两个正整数nn,mm。
输出格式
按字典序从小到大,每行输出一个满足要求的序列,数与数之间用空格分隔。
输入样例#1
输入#1
4 3
输出样例#1
输出#1
1 1 1
1 1 2
1 1 3
1 1 4
1 2 2
1 2 4
1 3 3
1 4 4
2 2 2
2 2 4
2 4 4
3 3 3
4 4 4
【样例说明】
以下13个数列满足条件
1,1,11,1,1;1,1,21,1,2;1,1,31,1,3;1,1,41,1,4;
1,2,21,2,2;1,2,41,2,4;1,3,31,3,3;1,4,41,4,4;
2,2,22,2,2;2,2,42,2,4;2,4,42,4,4;
3,3,33,3,3;4,4,44,4,4。
说明/提示
1 \le n \le 401≤n≤40;1 \le m \le 201≤m≤20
C++ 倍数序列 要求找到一个正整数序列
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
3条回答 默认 最新
- 诺er~ 2021-08-15 20:00关注
这样是否更好理解?求看;不理解请私信哦
#include<bits/stdc++.h> using namespace std; int n,m; int a[10010]; void dfs(int step,int num) { if(step>m) { for(int i=1;i<=m;i++) { cout<<a[i]<<" "; } cout<<endl; return ; } for(int i=0;i<=n-num;i++) { a[step]=num+i; if(a[step]%a[step-1]==0) dfs(step+1,a[step]); } } int main() { a[0]=1; cin>>n>>m; dfs(1,1); return 0; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决评论 打赏 举报无用 1
悬赏问题
- ¥15 微信会员卡等级和折扣规则
- ¥15 微信公众平台自制会员卡可以通过收款码收款码收款进行自动积分吗
- ¥15 随身WiFi网络灯亮但是没有网络,如何解决?
- ¥15 gdf格式的脑电数据如何处理matlab
- ¥20 重新写的代码替换了之后运行hbuliderx就这样了
- ¥100 监控抖音用户作品更新可以微信公众号提醒
- ¥15 UE5 如何可以不渲染HDRIBackdrop背景
- ¥70 2048小游戏毕设项目
- ¥20 mysql架构,按照姓名分表
- ¥15 MATLAB实现区间[a,b]上的Gauss-Legendre积分