题目描述

本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。

给定数列 1,1,1,3,5,9,17,⋯1,1,1,3,5,9,17,⋯,从第 4项开始,每项都是前 3 项的和。

求第 2019032420190324 项的最后 4 位数字。

运行限制

最大运行时间:1s

最大运行内存: 128M

思路

类似斐波那契数列

代码1

public class Lanqiao600 {
public static void main(String[] args) {
int a[]=new int[20190324];
a[0]=a[1]=a[2]=1;
for (int i = 3; i <20190324; i++) {
a[i]=((a[i-1]+a[i-2]+a[i-3])%10000);
}
System.out.println(a[20190323]);
}
}

结果实例

pCgUipn.png

缺点

内存占用过大

改进:因为只需要输出第20190324项,所以前面几项可定义为临时变量,计算一次释放一次,动态运行。

代码2(优化)

public class Lanqiao600 {
public static void main(String[] args) {
int a=1,b=1,c=1,d=0;
for (int i = 3; i < 20190324; i++) {
d=(a+b+c)%10000;
a=b;
b=c;
c=d;
}
System.out.println(d);
}
}

结果实例

pCgUipn.png