TOI 2021 入營考 A. 原始人排序

基本的因數性質

#include<bits/stdc++.h>
using namespace std;

int main(){
    ios::sync_with_stdio(false);

    int dt[1000];
    int n;
    cin>>n;
    for(int i=0;i<n;i++){
        cin>>dt[i];

    }
    stable_sort(dt,dt+n,[](int a,int b){
        int ctA=0,ctB=0;

        while(a>=1){
            if(a%2==1){
                ctA++;
            }
            a/=2;
        }
        while(b>=1){
            if(b%2==1){
                ctB++;
            }
            b/=2;
        }
        return ctA<ctB;
    });

    for(int i=0;i<n;i++){
        cout<<dt[i]<<" ";
    }
    return 0;
}