蓝桥杯JAVA B组 2019第三题 数列求值

该问题描述了一个类似于斐波那契数列的序列,但只关注第20190324项的最后四位数字。由于数值过大,直接计算会导致溢出。通过只保留每次运算结果的后四位,避免了溢出问题。提供的Java代码示例展示了如何存储和计算这个序列。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一.题目描述

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

二.思路分析

此题类似于斐波那契数列,但是所求20190324项的最后四位数字,要是单纯按照斐波那契数列的思想求下去,BigInteger类型都存不了这么大的数。

然后我们发现,所求20190324项的最后四位数字(也就是变相的告诉我们运算过程只和每个数的后四位有关系),那么我们只需要保留每次运算结果的后四位就OK了,这样绝对不会溢出。

三.代码

public class test1 {
    public static void main(String[] args){
        int []arr = new int[20190325];
        arr[1]=1;
        arr[2]=1;
        arr[3]=1;
        for(int i =4;i<=20190324;i++){
            arr[i]=arr[i-1]+arr[i-2]+arr[i-3];
            arr[i]=arr[i]%10000;//数太大了,由题目可知,只求最后四位数就好
        }
        System.out.println(arr[20190324]);
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值