LQ0007 数列求值递推

Posted 海岛Blog

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LQ0007 数列求值递推相关的知识,希望对你有一定的参考价值。

题目出处:蓝桥杯2019初赛

题目描述
给定数列1, 1, 1, 3, 5, 9, 17, …,从第4 项开始,每项都是前3 项的和。求
第20190324 项的最后4 位数字。

题目分析
递推计算数列值,每次算出结果的后四位数字。
使用数组存储数列各项的结果,程序逻辑相对简单。
不用数组也可以计算,程序逻辑略微复杂,可以节省存储。

题记
玩程序玩的是时间和空间,要尽量做到程序运行时间短节省空间。

AC的C语言程序(使用数组)如下:

/* LQ0007 数列求值 */

#include <stdio.h>

#define MOD 10000
#define N 20190324

int f[N + 1];

int main()

    f[1] = f[2] = f[3] = 1;
    for (int i = 4; i <= N; i++)
        f[i] = (f[i - 3] + f[i - 2] + f[i - 1]) % MOD;

    printf("%d\\n", f[N]);

    return 0;

AC的C语言程序(节省存储)如下:

/* LQ0007 数列求值 */

#include <stdio.h>

#define MOD 10000
#define N 20190324

int main()

    int f1, f2, f3, t;
    f1 = f2 = f3 = 1;
    for (int i = 4; i <= N; i++) 
        t = (f1 + f2 + f3) % MOD;
        f1 = f2, f2 = f3, f3 = t;
    

    printf("%d\\n", t);

    return 0;

以上是关于LQ0007 数列求值递推的主要内容,如果未能解决你的问题,请参考以下文章

LQ0207 第39级台阶数列+递推

部分匹配值递推求解原理

LQ0004 等差数列GCD

LQ0004 等差数列GCD

LQ0074 蛇形填数递推

LQ0073 平面分割递推+数学