求大神出手解决下面问题??

本关任务:运用枚举和递推的基本思想,通过编程计算出双关系递推数列。设集合 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