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

蓝桥杯-数位排序

蓝桥杯-数位排序

  • 1、问题描述
  • 2、解题思路
  • 3、代码实现

1、问题描述

  小蓝对一个数的数位之和很感兴趣, 今天他要按照数位之和给数排序。当 两个数各个数位之和不同时, 将数位和较小的排在前面, 当数位之和相等时, 将数值小的排在前面。

  例如, 2022 排在 409 前面, 因为 2022 的数位之和是 6, 小于 409 的数位 之和 13 。

  又如, 6 排在 2022 前面, 因为它们的数位之和相同, 而 6 小于 2022 。

  给定正整数 n,m, 请问对 1 到 n 采用这种方法排序时, 排在第 m 个的元 素是多少?

输入格式

  输入第一行包含一个正整数 n

  第二行包含一个正整数 m

输出格式

  输出一行包含一个整数, 表示答案。

样例输入

13
5

样例说明

  1 到 13 的排序为: 1,10,2,11,3,12,4,13,5,6,7,8,91,10,2,11,3,12,4,13,5,6,7,8,9 。第 5 个数为 3 。

评测用例规模与约定

  • 对于 30%30% 的评测用例, 1≤m≤n≤3001≤mn≤300 。

  • 对于 50%50% 的评测用例, 1≤m≤n≤10001≤mn≤1000 。

  • 对于所有评测用例, 1≤m≤n≤1061≤mn10610^6106

运行限制

  • 最大运行时间:3s
  • 最大运行内存: 512M

2、解题思路

  我们可以用Map的key存真实的数字,用value存每个数字的位数之和,最后再根据Map的value进行排序返回一个新的Map或者List就行。

  注意:如果最后用List收集结果,那我们收集的是Map中排好序之后的key,此时的value对我们已经没用了,所以不要也行,直接用List比较方便,这里用LinkedHashMap去收集也是可以的。

3、代码实现

  写一个计算位数之和的函数

//返回位数和public static Integer sum(int number){int [] nums=new int[String.valueOf(number).length()];int temp=number;for (int i = 0; i < nums.length; i++) {nums[i]=temp%10;temp=(temp-nums[i])/10;}return Arrays.stream(nums).sum();}

   就是计算一个数字的个位、十位、百位等等,取模之后减去取模结果再除10就行(十进制)。

public static void main(String[] args) {Scanner scan = new Scanner(System.in);int n=scan.nextInt();int m=scan.nextInt();HashMap<Integer, Integer> map = new HashMap<>();for (int i = 1; i <= n; i++) {//value存位数之和map.put(i,sum(i));}//将排序之后的key用List收集,此时value对我们已经没用了。List<Integer> collect = map.entrySet().stream().sorted((o1, o2) -> o1.getValue().compareTo(o2.getValue())).map(Map.Entry::getKey).collect(Collectors.toList());System.out.println("排序之后的key:"+collect);    System.out.println(collect.get(m - 1));}

  运行结果如下:

image-20230226184828447

  这里用Map去收集结果也是可以的,用LinkedHashMap收集结果的代码如下所示:

HashMap<Integer, Integer> collect = map.entrySet().stream().sorted((o1, o2) -> o1.getValue().compareTo(o2.getValue())).collect(Collectors.toMap(Map.Entry::getKey,Map.Entry::getValue,(oldValue, newValue) -> newValue,LinkedHashMap::new));

  遍历一下key和value

collect.entrySet().forEach(System.out::println);

  运行结果如下:

image-20230226190332502

   这样确实也可以实现,不过已经都可以用List的get(int index)方法直接取出结果了,我觉得没必要用Map了,还多一步遍历。

相关文章:

蓝桥杯-数位排序

蓝桥杯-数位排序1、问题描述2、解题思路3、代码实现1、问题描述 小蓝对一个数的数位之和很感兴趣, 今天他要按照数位之和给数排序。当 两个数各个数位之和不同时, 将数位和较小的排在前面, 当数位之和相等时, 将数值小的排在前面。 例如, 2022 排在 409 前面, 因为 2022 的数位…...

【ES实战】ES 插件包离线安装(本地文件)

ES 插件包离线安装&#xff08;本地文件&#xff09; 文章目录ES 插件包离线安装&#xff08;本地文件&#xff09;使用安装命令安装直接解压式验证安装情况常用的分词插件analysis-ik analysis-pinyin analysis-dynamic-synonym 在集群的节点上分发插件的ZIP安装包 使用安…...

Spring的核心基础——IOC与DI

文章目录一、Spring简介1 Spring介绍1.1 为什么要学1.2 学什么2 初识Spring2.1 Spring家族2.2 Spring发展史3 Spring体系结构3.1 Spring Framework系统架构图4 Spring核心概念问题导入4.1 核心概念二、IOC和DI入门1 IOC入门问题导入1.1 门案例思路分析1.2 实现步骤1.3 实现代码…...

C++正则表达式基础

文章目录1. 查找第一个匹配的2. 查找所有结果3. 打印匹配结果的上下文4. 使用子表达式5. 查找并替换注意: .&#xff08;点&#xff09;在括号中没有特殊含义&#xff0c;无需转义用\转义。 1. 查找第一个匹配的 #include <iostream> #include <regex>using names…...

如何在网络安全中使用人工智能并避免受困于此

人工智能在网络安全中的应用正在迅速增长&#xff0c;并对威胁检测、事件响应、欺诈检测和漏洞管理产生了重大影响。根据Juniper Research的一份报告&#xff0c;预计到2023年&#xff0c;使用人工智能进行欺诈检测和预防将为企业每年节省110亿美元。但是&#xff0c;如何将人工…...

生态 | 人大金仓与超聚变的多个产品完成兼容认证

近日&#xff0c;人大金仓与超聚变数字技术有限公司&#xff08;简称“超聚变”&#xff09;完成了多款产品的兼容互认测试。测试表明&#xff0c;人大金仓KingbaseES V8数据库与超聚变服务器操作系统FusionOS、超聚变FusionOne基础设施完全兼容&#xff0c;人大金仓异构数据同…...

4自由度串联机械臂按颜色分拣物品功能的实现

1. 功能说明 本实验要实现的功能是&#xff1a;将黑、白两种颜色的工件分别放置在传感器上时&#xff0c;机械臂会根据检测到的颜色&#xff0c;将工件搬运至写有相应颜色字样区域。 2. 使用样机 本实验使用的样机为4自由度串联机械臂。 3. 运动功能实现 3.1 电子硬件 在这个…...

玩转结构体---【C语言】

⛩️博主主页&#xff1a;威化小餅干&#x1f4dd;系列专栏&#xff1a;【C语言】藏宝图&#x1f38f; ✨绳锯⽊断&#xff0c;⽔滴⽯穿&#xff01;一个编程爱好者的学习记录!✨目录结构体类型的声明结构体成员访问结构体传参前言我们是否有想过&#xff0c;为什么会有结构体呢…...

c语言指针怎么理解 第二部分

第四&#xff0c;指针有啥用。 比方说&#xff0c;我们有个函数&#xff0c;如下&#xff1a; int add&#xff08;int x){ return (x1); //把输入的值加1并返回结果。 } 好了&#xff0c;应用的时候是这样的&#xff1a; { int a1; aadd(a); //add函数返回的是a1 //现在 a等于…...

GC简介和监控调优

GC简介&#xff1a; GC(Garbage Collection)是java中的垃圾回收机制&#xff0c;是Java与C/C的主要区别之一&#xff0c;在使用JAVA的时候&#xff0c;一般不需要专门编写内存回收和垃圾清理代 码。这是因为在Java虚拟机中&#xff0c;存在自动内存管理和垃圾清扫机制。 什么…...

Understanding The Linux Kernel --- Part2 Memory Addressing

内存寻址 操作系统自身不必完全了解物理内存&#xff0c;如今的微处理器包含的硬件线路使内存管理既高效又健壮&#xff0c;所以编程错误就不会对该程序之外的内存产生非法访问 x86如何进行芯片级内存寻址Linux如何利用寻址硬件 x86 三种不同的地址术语 逻辑地址 逻辑地址…...

前后端分页查询好大的一个坑(已解决)

前言&#xff1a;如果你在做前后端的分页查询&#xff0c;找不到错误&#xff0c;请你来看看是否是和我一样的情况&#xff1f;情况&#xff1a;做了一个前后盾UI的项目&#xff0c;有一个页面是查询系统日志&#xff0c;要进行分页查询&#xff1b;第一页的&#xff1a;第5页的…...

Python批量执行读取ini文件和写入ini文件时,性能比较低怎么办,给出解决方案和源码

Python批量执行读取ini文件和写入ini文件时&#xff0c;性能比较低怎么办&#xff0c;给出解决方案和源码 解决方案&#xff1a; 使用ConfigParser的缓存机制&#xff0c;可以避免频繁读取ini文件造成的性能问题。 将ini文件转换为json格式&#xff0c;使用json库进行读写操作…...

微机原理与接口技术 汇编语言程序设计DOS常用命令

OS&#xff08;磁盘操作系统&#xff09;命令&#xff0c;是DOS操作系统的命令&#xff0c;是一种面向磁盘的操作命令&#xff0c;主要包括目录操作类命令、磁盘操作类命令、文件操作类命令和其它命令。 使用技巧 DOS命令不区分大小写&#xff0c;比如C盘的Program Files&…...

4.ffmpeg命令转码规则、过滤器介绍、手动流map选项

在上章我们学习了ffmpeg命令行帮助以及选项查找 本章我们来深入学习ffmpeg命令转码规则、过滤器介绍、手动流map选项 参考链接: 1.ffmpeg命令行转码流程 ffmpeg命令行转码流程如下图所示: 对应中文则是: 步骤如下所示: ffmpeg调用libavformat库(包含解复用器)来读取输入文件…...

【python】标准库详解

注&#xff1a;最后有面试挑战&#xff0c;看看自己掌握了吗 文章目录Standard Library简介python内置对象如何安装发布第三方模块10最好用的模块汇总包的本质datetime模块案例Math模块random模块OS模块sys模块time模块总结自定义模块标准库模块用help查看time模块常用第三方库…...

Golang Map原理(底层结构、查找/新增/删除、扩缩容)

参考&#xff1a; 解剖Go语言map底层实现Go语言核心手册-3.字典 一、Go Map底层结构&#xff1a; Go map的底层实现是一个哈希表&#xff08;数组 链表&#xff09;&#xff0c;使用拉链法消除哈希冲突&#xff0c;因此实现map的过程实际上就是实现哈希表的过程。 先来看下…...

Java_数组

数组 1.概念 ​ 需求&#xff1a;现在需要统计软件技术1班47名同学的成绩情况&#xff0c;例如计算平均成绩、最高成绩等。如果只能使用变量的话&#xff0c;那么需要定义100个变量&#xff0c;这样就比较复杂了。这时我们就可以使用数组来记住这47名同学的成绩&#xff0c;然…...

list与vector的区别

相信大家已经学过list与vector&#xff0c;关于它们的不同&#xff0c;我做了一些总结&#xff0c;如下表&#xff1a; vector list底层结构动态顺序表&#xff0c;一段连续的空间带头结点的双向链表随机访问支持随机访问&#xff0c;访问某个元素的效率…...

【C++、数据结构】位图、布隆过滤器、哈希切割(哈希思想的应用)

文章目录&#x1f4d6; 前言1. 位图1.1 海量数据处理思路分析&#xff1a;1.2 位图的具体实现&#xff1a;1.3 用位图解决问题&#xff1a;应用一&#xff1a;应用二&#xff1a;应用三&#xff1a;2. 布隆过滤器2.1 布隆过滤器的概念&#xff1a;2.2 布隆过滤器的测试&#xf…...

第19节 Node.js Express 框架

Express 是一个为Node.js设计的web开发框架&#xff0c;它基于nodejs平台。 Express 简介 Express是一个简洁而灵活的node.js Web应用框架, 提供了一系列强大特性帮助你创建各种Web应用&#xff0c;和丰富的HTTP工具。 使用Express可以快速地搭建一个完整功能的网站。 Expre…...

三维GIS开发cesium智慧地铁教程(5)Cesium相机控制

一、环境搭建 <script src"../cesium1.99/Build/Cesium/Cesium.js"></script> <link rel"stylesheet" href"../cesium1.99/Build/Cesium/Widgets/widgets.css"> 关键配置点&#xff1a; 路径验证&#xff1a;确保相对路径.…...

Module Federation 和 Native Federation 的比较

前言 Module Federation 是 Webpack 5 引入的微前端架构方案&#xff0c;允许不同独立构建的应用在运行时动态共享模块。 Native Federation 是 Angular 官方基于 Module Federation 理念实现的专为 Angular 优化的微前端方案。 概念解析 Module Federation (模块联邦) Modul…...

MySQL中【正则表达式】用法

MySQL 中正则表达式通过 REGEXP 或 RLIKE 操作符实现&#xff08;两者等价&#xff09;&#xff0c;用于在 WHERE 子句中进行复杂的字符串模式匹配。以下是核心用法和示例&#xff1a; 一、基础语法 SELECT column_name FROM table_name WHERE column_name REGEXP pattern; …...

(转)什么是DockerCompose?它有什么作用?

一、什么是DockerCompose? DockerCompose可以基于Compose文件帮我们快速的部署分布式应用&#xff0c;而无需手动一个个创建和运行容器。 Compose文件是一个文本文件&#xff0c;通过指令定义集群中的每个容器如何运行。 DockerCompose就是把DockerFile转换成指令去运行。 …...

AI书签管理工具开发全记录(十九):嵌入资源处理

1.前言 &#x1f4dd; 在上一篇文章中&#xff0c;我们完成了书签的导入导出功能。本篇文章我们研究如何处理嵌入资源&#xff0c;方便后续将资源打包到一个可执行文件中。 2.embed介绍 &#x1f3af; Go 1.16 引入了革命性的 embed 包&#xff0c;彻底改变了静态资源管理的…...

python报错No module named ‘tensorflow.keras‘

是由于不同版本的tensorflow下的keras所在的路径不同&#xff0c;结合所安装的tensorflow的目录结构修改from语句即可。 原语句&#xff1a; from tensorflow.keras.layers import Conv1D, MaxPooling1D, LSTM, Dense 修改后&#xff1a; from tensorflow.python.keras.lay…...

站群服务器的应用场景都有哪些?

站群服务器主要是为了多个网站的托管和管理所设计的&#xff0c;可以通过集中管理和高效资源的分配&#xff0c;来支持多个独立的网站同时运行&#xff0c;让每一个网站都可以分配到独立的IP地址&#xff0c;避免出现IP关联的风险&#xff0c;用户还可以通过控制面板进行管理功…...

LabVIEW双光子成像系统技术

双光子成像技术的核心特性 双光子成像通过双低能量光子协同激发机制&#xff0c;展现出显著的技术优势&#xff1a; 深层组织穿透能力&#xff1a;适用于活体组织深度成像 高分辨率观测性能&#xff1a;满足微观结构的精细研究需求 低光毒性特点&#xff1a;减少对样本的损伤…...

Caliper 配置文件解析:fisco-bcos.json

config.yaml 文件 config.yaml 是 Caliper 的主配置文件,通常包含以下内容: test:name: fisco-bcos-test # 测试名称description: Performance test of FISCO-BCOS # 测试描述workers:type: local # 工作进程类型number: 5 # 工作进程数量monitor:type: - docker- pro…...