求解答双关系递推数列

运用枚举和递推的基本思想,通过编程计算出双关系递推数列。设集合 M 定义如下:

1.初始 1∈M;

2.若x∈M,则有2x+1∈M,5x−1∈M;

3.再无其它的数属于M。

试求集合M中的元素从小到大排列后所得序列的第n项,其中n<10001。

补充下面的代码
#include
#include

int main(int argc, const char * argv[]) {

long long m[10001];     // 数组:从小到大保存的集合M的元素
int n;                  // 查询第n项
int p2;                 // F2(x)=2x+1的索引指针
int p5;                  // F5(x)=5x-1的索引指针

scanf("%d",&n);

m[1]=1;
p2=1;
p5=1;

// 请在这里补充代码,完成本关任务
/********* Begin *********/


/********* End *********/


printf("%lld\n",m[n]);

return 0;

}

img

代码补充如下:

#include <stdio.h>


int main(int argc, const char * argv[]) {
    long long m[10001];     // 数组:从小到大保存的集合M的元素
    int n;                  // 查询第n项
    int p2;                 // F2(x)=2x+1的索引指针
    int p5;                  // F5(x)=5x-1的索引指针

    scanf("%d",&n);

    m[1]=1;
    p2=1;
    p5=1;

    // 请在这里补充代码,完成本关任务
    /********* Begin *********/
    int index = 2;
    while (index <=n)
    {
        if(2*p2+1 < 5*p5-1)
        {
            m[index++] = 2*p2+1;
            p2++;
        }else
        {
            m[index++] = 5*p5-1;
            p5++;
        }
    }

    /********* End *********/


    printf("%lld\n",m[n]);

    return 0;
}