首页 > 其他分享 >4653. 数位排序

4653. 数位排序

时间:2023-01-04 11:12:37浏览次数:38  
标签:struct int sum num 4653 排序 数位

4653. 数位排序

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

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

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


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


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

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


第二行包含一个正整数 m


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

数据范围
对于 30%
的评测用例,1≤m≤n≤300

对于 50%
的评测用例,1≤m≤n≤1000

对于所有评测用例,1≤m≤n≤106

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

第 5
个数为 3

结构体排序

#include<bits/stdc++.h>
using namespace std;

typedef long long int ll;
const int N=1000010;

struct style{
    int num;
    ll sum_num;
};

struct style nums[N];
bool cmp(struct style n1,struct style n2){
    if(n1.sum_num!=n2.sum_num)  return n1.sum_num < n2.sum_num;
    else return n1.num < n2.num;
}

int main()
{
    int n,m;
    cin>>n>>m;
    for(int i=0;i<n;i++){
        nums[i].num=i+1;
        int temp=i+1;
        ll sum=0;
        while(temp) sum+=temp%10,temp/=10;
        nums[i].sum_num=sum;
    }
    sort(nums,nums+n,cmp);
    //for(int i=0;i<n;i++)    cout<<nums[i].num<<" ";
    cout<<nums[m-1].num;
    return 0;
}

标签:struct,int,sum,num,4653,排序,数位
From: https://www.cnblogs.com/SkyDusty/p/17024289.html

相关文章

  • lightweight的关键点排序
    这是排序,neck是作为最后一个节点。reorder_map=[1,7,9,11,6,8,10,13,15,17,12,14,16,3,2,5,4]converted_keypoints=list(keypoints[i-1]f......
  • C语言-保留小数位,不需要四舍五入
     1需要输出为截取后2位小数的转换方法#include<stdio.h>intmain(){floatn=23.478;inta,b;a=(int)n;b=(int)((n-a)*100);......
  • 关于数据排序问题使用sort排序
    字母和数字一起排序数字的排序是优先于字母的,   varfruits=["Banana","Orange","Apple","Mango",1,'1',22,1,0,'33'];fruits.sort();//0,1,1,1,......
  • List集合的排序方式
    本文主要讲述Lsit集合的排序方式:1/**2*集合的排序方式:2种方式3*/4publicclassGenericWork{5publicstaticvoidmain(String[]args){......
  • 【插入排序】详细讲解
    总体思路排序流程:一共十个数排序,先用第二个数55跟第一个数99比较,如果55小于99,那么交换55和99,此时前两个数(即55和99)已经有序了。接下来用第三个数11跟第二个数99比较,如......
  • 排序
    Ⅰ. 排序一. quicksort1. 手敲点击查看代码voidquicksort(intq[],intl,intr){//递归终止的情况if(l>=r)return;//子问题处理int......
  • 排序算法
    选择排序选择排序(Selectionsort)是一种简单直观的排序算法。它的工作原理如下。首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续......
  • 冒泡排序
    1.1冒泡排序分类 算法冒泡排序(BubbleSort)也是一种简单直观的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列......
  • 冒泡排序
    #include<stdio.h>intBubbleSort(intA[],intn){//输入:数组A,元素数目n//输出:数组A中元素完成从小到大排序inti,j,x;for(i=0;i<n-......
  • 数组中的元素排序和去重总结
    一、使用List来操作publicclassArraySort{publicstaticvoidmain(String[]args){//定义一个数组Integer[]str={1,3,66,4,78,55,9,4,3,99};//将数......