学习目标:
目标:熟练运用Java所学知识
学习内容:
本文内容:使用java解决 星际密码
题目描述
链接:https://www.nowcoder.com/questionTerminal/34f17d5f2a8240bea661a23ec095a062
来源:牛客网
星际战争开展了100年之后,NowCoder终于破译了外星人的密码!他们的密码是一串整数,通过一张表里的信息映射成最终4位密码。表的规则是:n对应的值是矩阵X的n次方的左上角,如果这个数不足4位则用0填充,如果大于4位的则只输出最后4位。
例如n=2时,
即2对应的数是“0002”。
输入描述:
输入有多组数据。
每组数据两行:
第一行包含一个整数n (1≤n≤100);
第二行包含n个正整数Xi (1≤Xi≤10000)
输出描述:
对应每一组输入,输出一行相应的密码。
解题思路
根据一下矩阵乘法规则
我们继续往下计算
我们会发现其实就是斐波那契数列的每一项,问题也就得到了解决
实现代码
import java.util.*;
public class Main{
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
while(sc.hasNext()){
int n=sc.nextInt();
int[] ary=new int[10000];
ary[0]=1;
ary[1]=2;
for(int i=2;i<10000;i++){
ary[i]=(ary[i-1]+ary[i-2])%10000;
}
for(int i=0;i<n;i++){
System.out.printf("%04d",ary[sc.nextInt()-1]);//格式化输出
}
System.out.println();
}
}
}
格式化输出例子:
public class Example_07 {
public static void main(String[] args) {
int a=123;
System.out.printf("%d\n",a);
System.out.printf("%4d\n",a);
System.out.printf("%04d\n",a);
}
}
运行结果:
123
123
0123