想不出来
R7-3 平方和排序
分数 10
单位 绍兴文理学院
输入int类型范围内的N个非负整数,要求按各个整数的各数位上数字的平方和从小到大排序,若平方和相等则按数值从小到大排序。
例如,三个整数9、31、13各数位上数字的平方和分别为81、10、10,则排序结果为13、31、9。
输入格式:
测试数据有多组。每组数据先输入一个整数N(0<N<100),然后输入N个非负整数。若N=0,则表示输入结束。
输出格式:
对于每组测试,在一行上输出按要求排序后的结果,数据之间留一个空格。
输入样例:
9
12 567 91 33 657 812 2221 3 77
5
1 3 11 33 9
0
输出样例:
12 3 2221 33 812 91 77 567 657
1 11 3 33 9
n = int(input())
nums = list(map(int, input().split()))
nums.sort()
nums = [str(i) for i in sorted(nums, key=lambda x: sum(int(i)**2 for i in str(x)))]
print(' '.join(nums))
n = int(input())
lst = []
while n!=0:
nums = list(map(int, input().split()))[:n]
lst.append(nums)
n = int(input())
res = []
for j in lst:
dic = {}
for i in j:
dic[i] = sum(map(lambda x:int(x)**2,str(i)))
res.append(dic)
for d in res:
print(*[x[0] for x in sorted(d.items(),key=lambda e:e[1])])
测试通过:
============================== RESTART: D:\test.py =============================
9
12 567 91 33 657 812 2221 3 77
5
1 3 11 33 9
0
12 3 2221 33 812 91 77 567 657
1 11 3 33 9