1956: 序列排序
内存限制:256 MB
时间限制:1.000 S
评测方式:文本比较
命题人:
提交:32
解决:17
题目描述
对于给定的正整数序列,按照每个数的各位数和从大到小排序,各位数和相同的按照本身大小排序,大的在前,小的在后。
输入
第一行1个整数n,表示序列的大小。( 0 < n ≤ 1000) 第二行n个正整数,表示序列的每个数,每个数不大于100000000。
输出
输出按照题目要求排序后的序列
样例输入 复制
6
17 26 9 13 88 10
样例输出 复制
88 9 26 17 13 10
提示
#include<bits/stdc++.h>
using namespace std;
int a[1010];
int cmp(int x,int y) {
int _x=x,_y=y;
int sx=0,sy=0;
while (x>0) {
sx+=x%10;
x/=10;
}
while (y>0) {
sy+=y%10;
y/=10;
}
if (sx==sy)
return _x>_y;
else
return sx>sy;
}
int n;
int main(){
cin>>n;
for (int i=1;i<=n;i++) {
cin>>a[i];
}
sort(a+1,a+n+1,cmp);
for (int i=1;i<=n;i++)
cout<<a[i]<<" ";
return 0;
}