输入n个正整数(1<n<=10),然后按照每个数的数字和(取该数的各位数字相加)的大小,从大到小输出这n个数(如果其中有几个数的数字和相同,则这几个数按其输入时的先后顺序输出)
时间: 2024-02-03 22:12:01 浏览: 109
求正整数各位数字之和
可以使用桶排序的思想来解决这个问题。具体步骤如下:
1. 读入n个正整数
2. 对于每个数,计算它的数字和,并将该数存入对应数字和的桶中。如果桶中已有数,则将该数加入桶中已有数的后面。
3. 从数字和最大的桶开始,按照桶中数的先后顺序输出所有数,直到输出n个数为止。
以下是Python代码实现:
```python
n = int(input())
bucket = [[] for _ in range(100)] # 桶,存放数字和相同的数
num_list = list(map(int, input().split()))
for num in num_list:
digit_sum = sum(map(int, str(num))) # 计算数字和
bucket[digit_sum].append(num) # 放入对应的桶中
count = 0 # 记录已输出数的个数
for i in range(99, 0, -1): # 从数字和最大的桶开始遍历
if count == n:
break
if bucket[i]: # 如果桶不为空
for num in bucket[i]: # 输出桶中的数
print(num, end=' ')
count += 1
if count == n:
break
```
样例输入:
```
5
123 45 678 90 1234
```
样例输出:
```
1234 45 678 123 90
```
阅读全文