问题描述
小蓝对一个数的数位之和很感兴趣, 今天他要按照数位之和给数排序。当 两个数各个数位之和不同时, 将数位和较小的排在前面, 当数位之和相等时, 将数值小的排在前面。
例如, 2022 排在 409 前面, 因为 2022 的数位之和是 6, 小于 409 的数位 之和 13 。
又如, 6 排在 2022 前面, 因为它们的数位之和相同, 而 6 小于 2022 。
给定正整数 n,m, 请问对 1 到 n 采用这种方法排序时, 排在第 m 个的元 素是多少?
输入格式
输入第一行包含一个正整数 n 。
第二行包含一个正整数 m 。
输出格式
输出一行包含一个整数, 表示答案。
样例输入
13 5
样例输出
3
样例说明
1 到 13 的排序为: 1,10,2,11,3,12,4,13,5,6,7,8,9 。第 5 个数为 3 。
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int n=scan.nextInt();
int m=scan.nextInt();
int[] a=new int[n+1];
int index=1;
for(int i=1;i<=54;i++){
for(int j=1;j<=n;j++){
if(sum(j)==i){
a[index]=j;
index++;
}
}
}
System.out.println(a[m]);
scan.close();
}
public static int sum(int n){
int y=0;
int s=0;
while(n>0){
y=n%10;
s=s+y;
n=n/10;
}
return s;
}
}
文章描述了一种按照数位之和进行排序的算法,给定1到n的整数范围,找出按此规则排序后第m个位置的元素。给出了使用Java编写的示例代码。
2494

被折叠的 条评论
为什么被折叠?



