说明
我们有N个正整数,均小于 10000 。
现在需要将这些正整数按照除以 3 的余数从小到大排序,即除以 3 余 0 的数排在除以 3 余 1的数前面,除以 3 余 1 的数排在除以 3 余 2 的数前面。如果余数相等,则按照正整数的值从小到大排序。
输入格式
两行
第一行为一个整数 n ,表示数的个数。(n<=100)
第二行为 n 个整数,数与数之间用空格隔开。
输出格式
按照除以 33 的余数从小到大排序,如果余数相等,则按照正整数的值从小到大排序。
输出一行,数与数之间用一个空格隔开。
样例
输入数据 1
9
1 2 3 4 5 6 7 8 9
输出数据 1
3 6 9 1 4 7 2 5 8
代码
#include<bits/stdc++.h>
using namespace std;
bool cmp(int x,int y){
if(x%3<y%3)return true;
if(x%3>y%3)return false;
if(x%3==y%3)return x<y;
}
int a[1001];
int main(){
int n;
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;
}