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

数位排序(2023寒假每日一题 9)

小蓝对一个数的数位之和很感兴趣,今天他要按照数位之和给数排序。

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

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

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

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

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

第二行包含一个正整数 m m m

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

数据范围
对于 30 % 30\% 30% 的评测用例, 1 ≤ m ≤ n ≤ 300 1≤m≤n≤300 1mn300
对于 50 % 50\% 50% 的评测用例, 1 ≤ m ≤ n ≤ 1000 1≤m≤n≤1000 1mn1000
对于所有评测用例, 1 ≤ m ≤ n ≤ 1 0 6 1≤m≤n≤10^6 1mn106

输入样例:

13
5

输出样例:

3

样例解释
1 1 1 13 13 13 的排序为: 1 , 10 , 2 , 11 , 3 , 12 , 4 , 13 , 5 , 6 , 7 , 8 , 9 1,10,2,11,3,12,4,13,5,6,7,8,9 1,10,2,11,3,12,4,13,5,6,7,8,9

5 5 5 个数为 3 3 3


#include<iostream>
#include<algorithm>

#define x first
#define y second

using namespace std;

const int N = 1000010;

typedef pair<int, int> PII;

int n, m;
PII a[N];

int main(){
    
    cin >> n >> m;
    int b, c;
    for(int i = 1; i <= n; i++) {
        b = i, c = 0;
        while(b) c += b % 10, b /= 10;
        a[i].x = c, a[i].y = i;
    }
    sort(a, a + n + 1);
    cout << a[m].y << endl;
    
    return 0;
}

http://www.kler.cn/a/4889.html

相关文章:

  • 【C#】List.ForEach方法
  • 做抖音起号的五件套是什么?抖音五件套怎么搭建?
  • VisualDCT用户手册
  • Synchronized锁升级之无锁和偏向锁
  • 【计算机视觉】COCO Caption数据集简单介绍
  • 032:cesium修改默认地图源,动态指定地图
  • Redis7笔记(正在更新中)
  • 【华为OD机试 2023最新 】 优选核酸检测点(C++)
  • 优思学院|平衡计分卡是什么?
  • 网站流量飙升背后:外贸企业谷歌SEO优化实战经验分享
  • Prometheus监控实战系列二十五: Thanos介绍
  • Linux 监控进程创建行为
  • Java设计模式-4、适配器模式
  • 【Hydro】龙格-库塔方法的公式推导
  • ChatGPT背后有哪些关键技术?CSIG企业行带你一探究竟
  • PyTorch 深度学习实战 | 基于生成式对抗网络生成动漫人物
  • JavaScript中bind的用法
  • STM32基于STM32CubeMX DMA + EXTI读取DS1307数据
  • 人大金仓数据库CentOS7安装简述
  • Windows7操作系统