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

news2025/3/13 3:13:33

目录

 一、洗牌

(1)原题再现

(2)问题分析

(3)完整代码

 二、数根

(1)原题再现

(2)问题分析

(3)完整代码


 一、洗牌

(1)原题再现

星际密码__牛客网

        星际战争开展了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)

 

输出描述:

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

示例1

输入6

18 15 21 13 25 27

5 1 10 100 1000 10000

输出

418109877711037713937811

00010089410135017501

(2)问题分析

        这道题的本质就是求斐波那契数列,可能有人读不懂题目,题目第一行输入的整数n,表示这个密码由n个矩阵的左上角组成的,就是说输出的结果有4*n位,每个密码有4位组成到一起。第二行输入的就是每一个四位密码对应着多少个\begin{vmatrix} 1 &1 \\ 1 & 0 \end{vmatrix}矩阵的乘积。

比如说:18 15 21 13 25 27就是求这6个\begin{vmatrix} 1 &1 \\ 1 & 0 \end{vmatrix}^{18}\begin{vmatrix} 1 &1 \\ 1 & 0 \end{vmatrix}^{15}\begin{vmatrix} 1 &1 \\ 1 & 0 \end{vmatrix}^{21}\begin{vmatrix} 1 &1 \\ 1 & 0 \end{vmatrix}^{13}\begin{vmatrix} 1 &1 \\ 1 & 0 \end{vmatrix}^{25}\begin{vmatrix} 1 &1 \\ 1 & 0 \end{vmatrix}^{27}矩阵左上角的值,保留四位。

        其实我们不难发现

\begin{vmatrix} 1 &1 \\ 1 & 0 \end{vmatrix}^{1}=\begin{vmatrix} 1 &1 \\ 1 & 0 \end{vmatrix}

\begin{vmatrix} 1 &1 \\ 1 & 0 \end{vmatrix}^{2}=\begin{vmatrix} 2 &1 \\ 1 & 2 \end{vmatrix}

\begin{vmatrix} 1 &1 \\ 1 & 0 \end{vmatrix}^{3}=\begin{vmatrix} 3 &2 \\ 2 & 1 \end{vmatrix}

\begin{vmatrix} 1 &1 \\ 1 & 0 \end{vmatrix}^{4}=\begin{vmatrix} 5 &3 \\ 3 & 2 \end{vmatrix}

\begin{vmatrix} 1 &1 \\ 1 & 0 \end{vmatrix}^{5}=\begin{vmatrix} 8 &5 \\ 5 & 3 \end{vmatrix}

到这里我们基本可以看出规律,其实矩阵左上角就是一个斐波那契数列:1,1,2,3,5,8……

最后对数组进行格式上的处理

(3)完整代码

import java.util.*;
public class Main {
    public static void main(String[] args) {
        int[] arr = new int[10001];
        arr[1] = 1;
        arr[2] = 2;
        for (int i = 3; i < 10001; i++) {
            arr[i] = arr[i - 1] + arr[i - 2];
            arr[i] =  arr[i] % 10000;
        }
        Scanner sc = new Scanner(System.in);
        while (sc.hasNext()) {
            StringBuffer sb = new StringBuffer();
            int n = sc.nextInt();
            for (int i = 0; i < n; i++) {
                int x = sc.nextInt();
                sb.append(String.format("%04d", arr[x]));
            }
            System.out.println(sb);
        }

    }
}

 二、数根

(1)原题再现

数根__牛客网

        数根可以通过把一个数的各个位上的数字加起来得到。如果得到的数是一位数,那么这个数就是数根;如果结果是两位数或者包括更多位的数字,那么再把这些数字加起来。如此进行下去,直到得到是一位数为止。
比如,对于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

(2)问题分析

        很简单,我们可以看数据范围是超过long型的大小的,所以我们得用String类来存储,我这直接每输入一个数字就处理一个数字。把给个字符数字加起来,字符转数字的方式就是-‘0’,非常简单。

(3)完整代码

import java.util.*;
public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        while (scanner.hasNext()) {
            String str = scanner.next();
            while (str.length() > 1) {
                int result = 0;
                for (int i = 0; i < str.length(); i++)
                    result += str.charAt(i) - '0';
                str = String.valueOf(result);
            }
            System.out.println(str);
        }
    }
}


 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/413449.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

过度的焦虑 到底有多糟

你们知道过度的焦虑到底有多糟糕吗&#xff1f; 现在生活节奏越来越快&#xff0c;不管是生活、工作还是学习&#xff0c;很多方面都给我们带来了很多的压力问题&#xff0c;我们所承受的负担越来越重&#xff0c;很多人时常处于一种非常疲劳、过度的焦虑的状态。 你们知道过度…

什么是Node.js

文章目录什么是Node.js简介常用命令Node内置模块Node.js和JavaScript的区别什么是Node.js 简介 Node.js是一个基于Chrome V8引擎的JavaScript运行环境。它允许开发者使用JavaScript编写服务器端代码&#xff0c;而不仅仅是浏览器端的代码。Node.js的出现使得JavaScript可以在…

Vue环境下安装Less|Sass|Stylus(详细指南)

Vue_Cli环境下如何使用less、sass、stylus&#xff1f;报错如何解决&#xff1f; 安装Less 依次使用以下npm执行命令即可完后less的安装 npm install lessnpm install less-loader在vue组件style中使用less <style lang"less"></style>安装Sass(三者之…

如何抓住ChatGPT的热潮,打造小红书爆款

如何抓住ChatGPT的热潮&#xff0c;打造小红书爆款 前两周我看到一个小红书才申请了没多久就已经有好几万的粉丝&#xff0c;于是我让我老婆也赶紧注册一个&#xff0c;毕竟小红书也有着不错的用户群体 那么我们如何通过GPT辅助我们快速创作呢&#xff1f;先来看下ChatGPT的回答…

《离散数学导学》精炼——第6,7章(类型集合论,谓词逻辑)

引言 笔者一直觉得在计算机这一学科的学习中&#xff0c;离散数学是极为重要的知识基础。离散化的思想体现在计算机学科的方方面面。举例来说&#xff0c;“像素”这一概念是我们日常生活中耳熟能详的&#xff0c;将一个图片拆分成一个个极微小的像素&#xff0c;就是利用了离…

[1] 顺序表实现

一、引入顺序表 提出问题&#xff1a; 顺序表底层是一个数组&#xff0c;为什么不是直接操作数组就好了&#xff0c;还要单独写一个类&#xff0c;说底层是数组呢&#xff1f;&#xff1f; 因为顺序表可以有更多的操作&#xff1a; 比如一个数组&#xff0c;我们没有办法知…

Android 11.0 原生SystemUI下拉通知栏UI背景设置为圆角背景的定制(二)

1.前言 在11.0的系统rom定制化开发中,在原生系统SystemUI下拉状态栏的下拉通知栏的背景默认是白色四角的背景, 由于在产品设计中,在对下拉通知栏通知的背景需要把四角背景默认改成圆角背景,所以就需要分析系统原生下拉通知栏的每条通知的默认背景, 然后通过systemui的通知…

MobTech 秒验|极速验证,拉新无忧

一、运营拓展新用户的难题 运营拓展新用户是每个应用都需要面对的问题&#xff0c;但是在实际操作中&#xff0c;往往会遇到一些困难。其中一个主要的难题就是注册和登录的繁琐性。用户在使用一个新的应用时&#xff0c;通常需要填写手机号、获取验证码、输入验证码等步骤&…

Java-红黑树的实现

目录一、概述二、红黑树的操作1. 变色2. 左旋与右旋3. 插入节点4. 删除节点三、手写代码1. 通用方法2. 中序遍历3. 左旋4. 右旋5. 添加节点6. 删除节点四、完整代码五、测试1. 红黑树打印类2. 测试代码3. 测试结果一、概述 关于红黑树的学习&#xff0c;先推荐给大家一个网址&…

Centos7安装部署Jenkins

Jenkins简介&#xff1a; Jenkins只是一个平台&#xff0c;真正运作的都是插件。这就是jenkins流行的原因&#xff0c;因为jenkins什么插件都有 Hudson是Jenkins的前身&#xff0c;是基于Java开发的一种持续集成工具&#xff0c;用于监控程序重复的工作&#xff0c;Hudson后来被…

文章自动生成器 -原创文章生成器在线版

怎么将ChatGPT生成文章保存 在使用ChatGPT生成文章后&#xff0c;您可以使用以下几种方法将其保存起来&#xff1a; 复制粘贴&#xff1a;最简单的方法是将生成的文章文本复制并粘贴到文本编辑器或其他文本处理软件中&#xff0c;如Word文档或Google Docs&#xff0c;以保存文…

I2C通信

一、理论上了解I2C时序 I2C写数据时序如图&#xff1a; 通过解析器解析I2C通信如上图&#xff08;SCL和SDA反了&#xff09;。 1---起始信号 2、3---应答信号ACK 5---停止信号 起始信号&#xff1a;SCL线是高电平时&#xff0c;SDA线从高电平向低电平切换。 停…

一个大二学生送给大一学弟学妹的建议

博主简介&#xff1a;先简单的介绍一下我吧&#xff0c;本人是一名大二学生&#xff0c;来自四川。目前所学专业是人工智能&#xff0c;致力于在CSDN平台分享自己的学习内容。 我为什么要写这篇文章&#xff1f; 我来到CSDN也已经一年了&#xff0c;在这一年里面&#xff0c;我…

go binary包

binary包使用与详解 最近在看一个第三方包的库源码&#xff0c;bigcache&#xff0c;发现其中用到了binary 里面的函数&#xff0c;所以准备研究一下。 可以看到binary 包位于encoding/binary&#xff0c;也就是表示这个包的作用是编辑码作用的&#xff0c;看到文档给出的解释…

加密的本质:数学的不对称性

文章目录 引言I 预备知识1.1 加密和授权1.2 非对称的特性II 椭圆曲线加密的方法2.1 椭圆曲线2.2 椭圆曲线的性质引言 不对称有时却自有其妙处与美感,比如黄金分割就是不对称的。 可以通过加密和授权,兼顾保护信息不外泄,而且某些得到授权的人还能使用信息。 I 预备知识 …

2022年人民满意手机银行发展洞察

易观&#xff1a;商业银行积极践行“金融为民”&#xff0c;坚持“以用户为中心”的发展理念&#xff0c;从全客群、全服务、全渠道推动金融服务触达广大人民群众。其中&#xff0c;手机银行作为服务及经营主阵地&#xff0c;是人民群众获取金融服务的超级入口及服务平台。 “以…

键盘摄影:今天老李是一名动物摄影师

键摄&#xff0c;全称键盘摄影师。原本是一个贬义词&#xff0c;是指那些没有相机&#xff0c;没有实拍经验&#xff0c;仅凭一副鼠标键盘&#xff0c;在家里打字&#xff0c;在网上头头是道地分享摄影技巧&#xff0c;同时对别人的作品指指点点&#xff0c;然后又无法秀出自己…

中国上海人工智能企业中集飞瞳全球港航AI独角兽企业,成熟智慧港航AI产品,数字化港口自动化码头智慧港航智能化中国上海人工智能企业

中国上海人工智能企业中集飞瞳全球港航AI独角兽企业&#xff0c;成熟智慧港航AI产品&#xff0c;数字化港口自动化码头智慧港航。CIMCAI打造全球领先新一代集装箱管理方案&#xff0c;手机小程序随时随地AI验箱&#xff0c;自动化箱况检测信息识别&#xff0c;集装箱信息识别箱…

总线的控制

总线控制 目录总线控制总线的判优控制链式查询计数器定时查询独立请求小结总线通信控制同步通信异步通信半同步通信分离通信由于总线上连接着多个部件&#xff0c;什么时候由哪个部件发送信息&#xff0c;如何给传送信息定时&#xff0c;如何防止信息丢失&#xff0c;如何避免多…

React源码解析之createElement和render方法

参考资料 请注意&#xff0c;这是React16.8的源码解析&#xff0c;当然他完全可以作为你阅读源码的参考&#xff0c;他还没有落后。 Step1 开始之前&#xff0c;要先了解一个知识点⬇️ 我们都知道&#xff0c;要在JSX中写React语法&#xff0c;那为什么不能在js文件中写呢&am…