小蓝对一个数的数位之和很感兴趣,今天他要按照数位之和给数排序。
当两个数各个数位之和不同时,将数位和较小的排在前面,当数位之和相等时,将数值小的排在前面。
例如, 排在 前面,因为 的数位之和是 ,小于 的数位之和 。
又如, 排在 前面,因为它们的数位之和相同,而 小于 。
给定正整数 ,请问对 到 采用这种方法排序时,排在第
输入格式
输入第一行包含一个正整数 。
第二行包含一个正整数 。
输出格式
输出一行包含一个整数,表示答案。
数据范围
对于 的评测用例,。
对于 的评测用例,。
对于所有评测用例,。
输入样例:
13
5
输出样例:
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;
}