目录

一、星际密码

二、数根


一、星际密码

题目描述:

星际战争开展了100年之后,NowCoder终于破译了外星人的密码!他们的密码是一串整数,通过一张表里的信息映射成最终4位密码。表的规则是:n对应的值 是矩阵X的n次方的左上角,如果这个数不足4位则用0填充,如果大于4位的则只输出最后4位。 |1 1|^n => |Xn ..| |1 0| |.. ..| 例如n=2时, |1 1|^2 => |1 1| * |1 1| => |2 1| |1 0| |1 0| |1 0| |1 1| 即2对应的数是“0002”。

输入描述:

输入有多组数据。

每组数据两行:第一行包含一个整数n (1≤n≤100);第二行包含n个正整数Xi (1≤Xi≤10000)

输出描述:

对应每一组输入,输出一行相应的密码。

示例

输入:6

18 15 21 13 25 27

5

1 10 100 1000 10000

输出:418109877711037713937811

00010089410135017501

题目解析:

该题目有更简单的方法就是找到规律,发现左上角的数是按照斐波那契数列的规律增长的,可以直接根据斐波那契数的规律得出答案,这里给出了这道题目的常规思路,就是按照矩阵相乘的规则,得到每次乘n次方后矩阵左上角的数,对其进行长度判断如果大于4位则取后四位,不足4位则在输出时补0。

import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int[][] x = {{1, 1}, {1, 0}};while (scanner.hasNext()){int n = scanner.nextInt();int[] arr = new int[n];StringBuilder sb = new StringBuilder();for (int i = 0; i < n; i++) {arr[i] = scanner.nextInt();String temp = Integer.toString(fun(x, arr[i]));if(temp.length() < 4){int num = 4 - temp.length();for (int j = 0; j < num; j++) {sb.append("0");}}sb.append(temp);}System.out.println(sb);}}public static int fun(int[][] x, int a){int[][] x1 = new int[2][2];int[][] x2 = new int[2][2];int[][] res = new int[2][2];for (int i = 0; i < 2; i++) {for (int j = 0; j < 2; j++) {x1[i][j] = x[i][j];x2[i][j] = x[i][j];res[i][j] = x[i][j];}}for (int i = 1; i < a; i++) {res[0][0] = (x1[0][0] * x2[0][0] + x1[0][1] * x2[1][0])%10000;res[0][1] = (x1[0][0] * x2[0][1] + x1[0][1] * x2[1][1])%10000;res[1][0] = (x1[1][0] * x2[0][0] + x1[1][1] * x2[1][0])%10000;res[1][1] = (x1[1][0] * x2[0][1] + x1[1][1] * x2[1][1])%10000;for (int j = 0; j < 2; j++) {for (int k = 0; k < 2; k++) {x1[j][k] = res[j][k];}}}return res[0][0];}
}

二、数根

题目描述:

数根可以通过把一个数的各个位上的数字加起来得到。如果得到的数是一位数,那么这个数就是数根;如果结果是两位数或者包括更多位的数字,那么再把这些 数字加起来。如此进行下去,直到得到是一位数为止。 比如,对于24 来说,把2 和4 相加得到6,由于6 是一位数,因此6 是24 的数根。 再比如39,把3 和9 加起来得到12,由于12 不是一位数,因此还得把1 和2 加起来,最后得到3,这是一个一位数,因此3 是39 的数根。 现在给你一个正整数,输出它的数根。

输入描述:

输入包含多组数据。 每组数据数据包含一个正整数n(1≤n≤10E1000)。

输出描述:

对应每一组数据,输出该正整数的数根。

示例1

输入:24

39

输出:6

3

题目解析:

由于要考虑数字可能会超出范围,这里用了字符串进行相关操作,只要字符串的长度大于1(不是一位),就说明还没求得树根,继续求各位和,再将这个结果赋给字符串继续判断,直到位数为1,求得树根。

import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);while(scanner.hasNext()){String s = scanner.nextLine();System.out.println(numRoot(s));}}public static String numRoot(String s){while(s.length() > 1){int sum = 0;for (int i = 0; i < s.length(); i++) {sum += s.charAt(i) - '0';}s = Integer.toString(sum);}return s;}
}

如有建议或想法,欢迎一起讨论学习~

Java题目训练——星际密码和数根相关推荐

  1. 刷题笔记之十一 (计算字符串的编辑距离+微信红包+年终奖+迷宫问题+星际密码+数根)

    目录 1. 计算字符串的编辑距离 2. 微信红包 3. 双向链表修改,比如插入新的结点,一定要画图 4. 一颗完全二叉树第六层有9个叶结点(根为第一层),则结点个数最多有109 5. 将N条长度均为M ...

  2. Java题目训练——年终奖和迷宫问题

    目录 一.年终奖 二.迷宫问题 一.年终奖 题目描述: 小东所在公司要发年终奖,而小东恰好获得了最高福利,他要在公司年会上参与一个抽奖游戏,游戏在一个6*6的棋盘上进行,上面放着36个价值不等的礼物, ...

  3. 【Java版oj】day25星际密码、数根

    目录 一.洗牌 (1)原题再现 (2)问题分析 (3)完整代码 二.数根 (1)原题再现 (2)问题分析 (3)完整代码 一.洗牌 (1)原题再现 星际密码__牛客网 星际战争开展了100年之后,No ...

  4. 【算法刷题日记之本手篇】星际密码与数根

    ⭐️前面的话⭐️ 本篇文章介绍来自牛客试题广场的两道题题解,分别为[星际密码]和[数根],展示语言java. 小贴士:本专栏所有题目来自牛客->面试刷题必用工具

  5. 【牛客刷题22】数根与星际密码

    文章目录 题目一:数根 1.题目内容 2.思路 3.代码实现 题目二:星际密码 1.题目内容 2.思路 3.代码实现 题目一:数根 1.题目内容 题目链接:数根 2.思路     这里需要注意:    ...

  6. 刷题_25:星际密码 and 数根

    一.星际密码 题目链接: 星际密码 题目描述: 星际战争开展了100年之后,NowCoder终于破译了外星人的密码!他们的密码是一串整数,通过一张表里的信息映射成最终4位密码.表的规则是:n对应的值是 ...

  7. 刷题日记【第十三篇】-笔试必刷题【数根+星际密码+跳台阶扩展问题+快到碗里来】

    刷题日记[第十三篇]-笔试必刷题[数根+星际密码+跳台阶扩展问题+快到碗里来] 1.方法区在JVM中也是一个非常重要的区域,它与堆一样,是被[线程共享]的区域. 下面有关JVM内存,说法错误的是?(c ...

  8. 每日一练2425——年终奖迷宫问题(难)星际密码(易错)数根(接收数据的方法)

    文章目录 年终奖 思路: 代码: 迷宫问题 思路: 代码: 星际密码 思路: 代码: 数根 思路: 代码: 年终奖 题目链接: 思路: 本题需要使用动态规划求解. 定义f(i,j)表示从左上角走到坐标 ...

  9. java星际密码问题

    文章目录 题目描述 解题思路 代码如下 题目描述 星际战争开展了100年之后,NowCoder终于破译了外星人的密码! 他们的密码是一串整数,通过一张表里的信息映射成最终4位密码. 表的规则是: n对 ...

最新文章

  1. html display 显示,CSS display显示
  2. java代码内创建mysql索引_Java Mysql数据库创建视图、索引、备份和恢复
  3. Vmware虚拟机网络模式NAT模式
  4. java字符串转日期_JAVA字符串转日期或日期转字符串
  5. 【控制】《多智能体机器人系统信息融合与协调》范波老师-第6章-基于分布式强化学习的多 Agent 协调方法
  6. linux 进程可以把自己,如何将Linux进程小隐于用户?仅仅一行代码即可
  7. 【链接】Linux C/C++ 学习路线-已拿腾讯、百度 offer
  8. React之事件绑定
  9. OpenCV-浮雕雕刻效果
  10. 3.8 Spark 用户日志分析
  11. 微软.Net RIA Services项目前景简评
  12. 3分钟全面了解元数据和数据元
  13. 激活Windows10,激活软件被报出,软件存在威胁或者恶意程序?
  14. 项目管理第十章项目沟通管理
  15. 打地鼠游戏(2D)学习笔记
  16. 计算机基础知识与Java语言概述(DAY1)
  17. Node 中的 Events
  18. 超全汇总!多传感器离线/在线时空联合标定方法
  19. 倍福PLC的Modbus-TCP Server入门教程
  20. 一文了解人工智能神经网络的原理

热门文章

  1. 高中数学-二项式定理以及系数和帕斯卡定理
  2. 滴滴治理算法探索与实践
  3. 【Linux】Linux文件与文件的存储
  4. Github上安卓榜排名第2的程序员教你如何学习【转载,侵删】
  5. 计算机无法进入桌面怎么备份,Windows系统损坏 | 无法进入系统如何正常备份数据?...
  6. 私有云一粒云盘的概述
  7. 哈工大-计算机系统-2022 | 大作业
  8. 未知参数休哈特matlab,未知异常诊断,Unknown exception diagnosis,音标,读音,翻译,英文例句,英语词典...
  9. 和平精英连接服务器未响应,和平精英卡顿怎么解决-和平精英卡顿问题解决方法_快吧手游...
  10. 2022-05-08水果机运动步数快捷指令(ios)