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; }