当前位置: 首页 > news >正文

蓝桥与力扣刷题(蓝桥 数列求值)

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

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

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

解题思路+代码:

代码:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.util.StringTokenizer;

public class 数列求值 {
    public static void main(String[] args) throws IOException {
        int t = 1;
        for (int i = 1; i <= t; i++) {
            solve();
        }
        out.flush();
    }

    static void solve(){
        int n = 20190324;
        long backFour = fibonacci(n); //只获取后四位数
        out.println(backFour);
    }

    //创建斐波那契数列求和方法
    public static long fibonacci(int n){
        if(n<=0){
            return 0;
        }
        if(n==1){
            return 1;
        }

        long a = 1; //F(1)
        long b = 1; //F(2)
        long c = 1; //F(3)

        //从第4项开始
        for(int i = 4; i<=n; i++){
            long d =( a + b + c) % 10000; //避免溢出
            //重新赋值,相当于a、b、c全部后移
            a = b; 
            b = c;
            c = d;
        }
        return c;//返回第n项的值
    }

    static FastReader in = new FastReader();
    static PrintWriter out = new PrintWriter(System.out);

    static class FastReader{
        BufferedReader br;
        StringTokenizer st;
        FastReader(){
            br = new BufferedReader(new InputStreamReader(System.in));
        }

        String next(){
            String str = "";
            while(st == null || !st.hasMoreElements()){
                try{
                    str = br.readLine();
                }catch (IOException e){
                    throw new RuntimeException(e);
                }
                st = new StringTokenizer(str);
            }
            return st.nextToken();
        }
        int nextInt(){
            return Integer.parseInt(next());
        }
        double nextDouble(){
            return Double.parseDouble(next());
        }
        long nextLong(){
            return Long.parseLong(next());
        }
    }
}

总结:这道题是求斐波那契数列中第n项的值,不过这道题加了一个要求(第n项值的后四位数)。传统的斐波那契数列是1,1,2,3,5,8,13……(从第3项开始是前两项的和),在本题中稍微改了一下是从第4项开始是前三项的和,但这并不影响解答该题。有一个关键点:求第20190324项值会造成数值溢出,因此需要%10000来避免溢出并输出值的后四位。(附加解释:这里面求解斐波那契数列值的后四位并不需要这么长段的代码,但这里面做了快读的操作,提高了读取数据的效率)。

相关文章:

  • 隐私权案件如何办理?公众人物隐私权为何受限?
  • 图莫斯TOOMOSS上位机TCANLINPro使用CAN UDS功能时 编写、加载27服务dll解锁算法文件
  • Spring Framework 中 BeanDefinition 是什么
  • 群体智能优化算法-牛顿-拉夫逊优化算法(Newton-Raphson-Based Optimizer, NRBO,含Matlab源代码)
  • 应用程序安全趋势:左移安全、人工智能和开源恶意软件
  • 物联网为什么用MQTT不用 HTTP 或 UDP?
  • Android14 Log.isLoggable判断的分析
  • C++ 头文件说明
  • 【PCB工艺】基础:电子元器件
  • JAVA-位运算
  • 【ArcGIS】ArcGIS10.8安装过程(失败记录)
  • 《线程池:Linux平台编译线程池动态库发生的死锁问题》
  • JAVA-序列化与反序列化
  • 【机器学习】模型拟合
  • 【合新通信】---RF over fiber
  • linux sh脚本关于返回字符串调试问题(adb shell)
  • MySQL 安全传输
  • GenICam标准
  • Java基于SSM的农业电商服务系统小程序【附源码、文档说明】
  • 《港口危货储存单位主要安全管理人员》考试资料及答案解析
  • 加拿大驾车撞人事件遇难人数升到11人
  • 我国已形成完整人工智能产业体系,专利申请量位居全球首位
  • 合肥一季度GDP为3003.88亿元,同比增长6.6%
  • 钟声:美以芬太尼为借口滥施关税,纯属“内病外治”
  • 坤莹·帕塔玛·利斯达特拉任世界羽联主席
  • 理想汽车副总裁刘杰:不要被竞争牵着鼻子走,也不迷信护城河