本关任务:运用枚举和递推的基本思想,通过编程计算出双关系递推数列。设集合 M 定义如下:
1.初始 1∈M;
2.若x∈M,则有2x+1∈M,5x−1∈M;
3.再无其它的数属于M。
试求集合M中的元素从小到大排列后所得序列的第n项,其中n<10001。????
好的,您的问题我理解了,大概可以使用set容器,逐步扩大集合的包罗范围。我简单写一份代码。
#include <iostream>
#include <set>
#include <stdio.h>
using namespace std;
set<int> st;
int main()
{
st = set<int>();
st.insert(1);
int n;
scanf("%d", &n);
while(st.size() <= n){
set<int> temp = set<int>();
for(int i: st){
temp.insert(i);
temp.insert(2 * i + 1);
temp.insert(5 * i - 1);
}
st = temp;
}
int idx = 1;
for(int each: st){
// 如果想看看集合里的元素都是哪些,就取消掉这一行的注释。
// printf("%d ", each);
if(idx == n){
printf("\n%d\n", each);
break;
}
idx++;
}
return 0;
}
如果问题得到解决,记得采纳一波哦~
您好,我是有问必答小助手,你的问题已经有小伙伴为您解答了问题,您看下是否解决了您的问题,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632