数位排序-自定义比较函数

数位排序

4653. 数位排序 - AcWing题库

题目大意:输入两个数,n,m。

将1~n的数,按照以下规则排序:

​ 当两个数各个数位之和不同时,将数位和较小的排在前面,当数位之和相等时,将数值小的排在前面。

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

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

输入第出排序后的第m个数

思路

  • 根据两个参数进行排序,可以使用序偶pair
    • pair 还被称之为“序偶”,亦即它默认是可以比较的。它以 first 作为第一关键字,second 为第二关键字。
  • 当然也可以用结构体存储数和数位和,自定义排序规则即可
#include<iostream>
#include<algorithm>
using namespace std;
const int N = 1000010;
pair<int ,int> a[N];
int solve(int x){int sum = 0;while(x){sum +=x%10;x = x/10;}return sum;}
int main(){int m,n;cin>>m>>n;for(int i = 1; i <= m; i ++){a[i] = {solve(i),i};}sort(a+1,a+1+m);cout<<a[n].second<<endl;return 0;
}

在编写代码时,发现数组下标就可以代替第几位,用数组存数位和。即用下标代表原数字,数组存的数字代表数位和。

#include<iostream>
#include<algorithm>
using namespace std;
const int N = 1e6+10;
int a[N],b[N];
bool cmp(int x,int y)
{if(b[x] != b[y]) return b[x] < b[y];else return x < y;
}int main()
{int n,m;cin>>n>>m;for(int i = 1; i <=n; i ++){a[i] = i;int x = i;while(x){b[i] +=x%10;x /= 10;}}sort(a+1,a+1+n,cmp);cout<<a[m]<<endl;return 0;
}

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

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

相关文章

光伏电站运维管理系统功能全面详解

一、系统概述 光伏电站运维管理系统是一款专为光伏电站设计的综合性管理平台。该系统集成了先进的数据监测、故障诊断、运维任务管理、设备信息管理、用户权限管理以及系统维护与升级等功能&#xff0c;旨在提供全面、高效、智能的光伏电站运维服务&#xff0c;确保电站安全、…

java国产化云HIS基层医院系统源码 SaaS模式

目录 ​ 云HIS开发环境 功能模块介绍&#xff1a; 1、门诊模块 2、住院模块 3、药房、药库模块 ​编辑 4、电子病历模块 5、统计报表模块 6、系统管理模块 系统优势 云his之电子病历子系统功能 云 his 系统是运用云计算、大数据、物联网等新兴信息技术&#xff0c;按…

【C++初阶】C++简单入门(长期维护)

本篇博客是对C的一些简单知识分享&#xff0c;有需要借鉴即可。 C简单入门目录 一、C前言1.C的概念&#xff1a;2.C发展历程3.C如何学&#xff1f; 二、C入门1.C关键字(C98标准)2.命名空间3.C输入&输出①概念说明②使用说明③特征说明④细节拓展⑤cout与cin的意义 4.缺省参…

JavaScript_注释数据类型

JavaScript_语法_注释&数据类型&#xff1a; 1.2注释&#xff1a; 1.单行注释&#xff1a;//注释内容 2.多行注释&#xff1a;/*注释内容*/ 1.3数据类型&#xff1a; 1.原始数据类型(基本数据类型)&#xff1a;&#xff08;只有这五种&#xff09; 1.number&#xff1a;数字…

参花期刊投稿发表论文

《参花》是由国家新闻出版总署批准&#xff0c;吉林省文化和旅游厅主管&#xff0c;吉林省文化馆主办的正规文学类期刊。文学是用语言塑造形象反映社会生活的一种语言艺术&#xff0c;是自觉、独立而又面向整个社会的艺术&#xff0c;是文化中极具强烈感染力的重要组成部分&…

经典机器学习模型(八)梯度提升树GBDT详解

经典机器学习模型(八)梯度提升树GBDT详解 Boosting、Bagging和Stacking是集成学习(Ensemble Learning)的三种主要方法。 Boosting是一族可将弱学习器提升为强学习器的算法&#xff0c;不同于Bagging、Stacking方法&#xff0c;Boosting训练过程为串联方式&#xff0c;弱学习器…

如何在 7 天内掌握C++?

大家好&#xff0c;我是小康&#xff0c;今天我们来聊下如何快速学习 C 语言。 本篇文章适合于有 C 语言编程基础的小伙伴们&#xff0c;如果还没有学习过 C&#xff0c;请看这篇文章先入个门&#xff1a;C语言快速入门 引言&#xff1a; C&#xff0c;作为一门集面向过程和…

【Python】科研代码学习:十七 模型参数合并,safetensors / bin

【Python】科研代码学习&#xff1a;十七 模型参数合并&#xff0c;safetensors / bin 前言解决代码知识点&#xff1a;safetensors 和 bin 的区别&#xff1f;知识点&#xff1a;save_pretrained 还会新增的文件知识点&#xff1a;在保存模型参数时&#xff0c;大小发生了成倍…

华纳云:如何选择适合自己需求的备份服务器?

备份服务器是企业和个人保障数据安全和灾难恢复的重要设备之一&#xff0c;而选择适合自己需求的备份服务器是确保数据备份效果的关键一步。以下是一些关于如何选择适合需求的备份服务器的指南&#xff1a; 1. 确定数据量和备份频率&#xff1a; 首先&#xff0c;您需要确定您的…

面试经典150题——移除元素

面试经典150题 day2 题目来源我的题解方法一 双指针 题目来源 力扣每日一题&#xff1b;题序&#xff1a;27 我的题解 方法一 双指针 使用两个指针left和right分别指向最终数组的末尾和最终数组不需要的元素的最左侧。当nums[left]等于val&#xff0c;则将nums[right]替换nu…

mysql数据库死锁 处理方法

MySQL数据库死锁是一个常见的问题&#xff0c;通常发生在多个事务试图以不同的顺序锁定资源时。当两个或多个事务相互等待对方释放资源&#xff0c;就形成了死锁。以下是关于MySQL数据库死锁的删除方法&#xff0c;以及针对代码开发问题和报错问题的解答。 一、MySQL数据库死锁…

基于单链表的通讯录C语言实现

关于单链表的详细了解请见博主的另一篇博客&#xff0c;本文旨在对单链表进行应用&#xff0c;采用C语言编写。 http://t.csdnimg.cn/iBpFa 一、驱动层 1.1 SList.h #pragma once#include<stdio.h> #include<stdlib.h> #include<assert.h> #include"…

pytest教程-25-生成覆盖率报告插件-pytest-cov

领取资料&#xff0c;咨询答疑&#xff0c;请➕wei: June__Go 上一小节我们学习了pytest多重断言插件pytest-assume,本小节我们讲解一下pytest生成覆盖率报告插件pytest-cov。 测量代码覆盖率的工具在测试套件运行时观察你的代码&#xff0c;并跟踪哪些行被运行&#xff0c;…

10:00面试,10:08就出来了,问的问题有点变态。。。

从小厂出来&#xff0c;没想到在另一家公司又寄了。 到这家公司开始上班&#xff0c;加班是每天必不可少的&#xff0c;看在钱给的比较多的份上&#xff0c;就不太计较了。没想到8月一纸通知&#xff0c;所有人不准加班&#xff0c;加班费不仅没有了&#xff0c;薪资还要降40%…

【我的小工具】生成React页面类

有了数据表的结构信息&#xff0c;就能生成React 的页面类&#xff0c;快捷方便。 生成界面如下&#xff1a; 生成的React FrmUser.js页面如下&#xff1a; 只需再写里面的操作逻辑代码。

Claude使用教程

claude 3 opus面世后&#xff0c;网上盛传吊打了GPT-4。网上这几天也已经有了许多应用&#xff0c;但竟然还有很多小伙伴不知道国内怎么用gpt&#xff0c;也不知道怎么去用这个据说已经吊打了gpt-4的claude3。 今天我们想要进行的一项尝试就是—— 用claude3和gpt4&#xff0c…

C语言操作符详解(三)

一、表达式求值 1.1整型提升 C语言中整型算术运算总是至少以缺省整型类型的精度来进行的。 为了获得这个精度&#xff0c;表达式中的字符和短整型操作数在使用之前被转换为普通整型&#xff0c;这种转换称为整型提升。 如何进行整型提升呢&#xff1f; 1. 有符号整数提升是按…

不入耳开放式耳机哪个品牌好?2024年热销榜前五名品牌推荐

为何开放式耳机近年来如此火爆&#xff1f;首先&#xff0c;开放式耳机以其开放式的声学设计&#xff0c;打破了传统耳机的局限&#xff0c;为用户带来了更加自然、宽广的音质体验。其次&#xff0c;随着音乐文化的普及和人们对高品质生活的追求&#xff0c;开放式耳机作为高端…

QSettings保存配置信息,读取配置信息

保存配置 QSettings setting("config.ini",QSettings::IniFormat); setting.beginGroup("para"); setting.setValue("database","test"); setting.setValue("hostName","localhost"); setting.setValue("us…

PHP 转换HTML 为节点数组 ,可用于uni-app的rich-text渲染

在Web开发中&#xff0c;HTML文档的结构和内容往往需要通过编程方式进行操作和解析。PHP DOMDocument类是一个强大的工具&#xff0c;可以将HTML转换为可操作的对象结构&#xff0c;本文将介绍一下使用PHP的DOMDocument类将HTML转换为节点数组的过程。htmlToNodes函数将HTML字符…