思路
1、求cnt
‘4’、‘6’、‘9’、‘0’每出现一次,cnt += 1。
‘8’每出现一次,cnt += 2
2、简单排序sort
3、输出
C++ 代码
#include<bits/stdc++.h>
using namespace std;
struct lq{
int val;
int cnt=0;
}a[200005];
int n;
bool cmp(lq l,lq q)
{
if(l.cnt == q.cnt) return l.val < q.val;
return l.cnt<q.cnt;
}
int main(){
ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
cin>>n;
for(int i=0;i<n;i++)
{
cin>>a[i].val;
string s = to_string(a[i].val);
a[i].cnt += count(s.begin(),s.end(),'4') + count(s.begin(),s.end(),'6')+ count(s.begin(),s.end(),'9') + count(s.begin(),s.end(),'0')+ count(s.begin(),s.end(),'8')*2;
}
sort(a,a+n,cmp);
for(int i=0;i<n;i++) cout<<a[i].val<<' ';
return 0;
}