java星际密码问题

文章目录

  • 题目描述
  • 解题思路
  • 代码如下


题目描述

星际战争开展了100年之后,NowCoder终于破译了外星人的密码!

他们的密码是一串整数,通过一张表里的信息映射成最终4位密码。

表的规则是:

n对应的值是矩阵X的n次方的左上角,
如果这个数不足4位则用0填充,
如果大于4位的则只输出最后4位。


以下是本篇文章正文内容,下面案例可供参考

解题思路

由题意知,此为斐波那契
f(n) = f(n-1) + f(n-2)

注意格式化输出:
只取四位整数,且不足四位补0

代码如下

import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        //初始化
        int[] nums = new int[10001];
        nums[1]=1;
        nums[2]=2;
        for (int i = 3; i < 10001; i++) {
            nums[i] = nums[i-1]+nums[i-2];//斐波那契数列
            nums[i] = nums[i]%10000;//取最后四位的值
        }
        Scanner sc = new Scanner(System.in);
        while(sc.hasNext()){
            StringBuilder sb = new StringBuilder();
            int n = sc.nextInt();
            for (int i = 0; i < n; i++) {
                int xi = sc.nextInt();
                sb.append(String.format("%04d",nums[xi]));//格式化输出,表示只输出四位,不足填充0
            }
            System.out.println(sb);
        }
    }
}

你可能感兴趣的:(每日一题,笔记,java,算法,斐波那契)