> 文档中心 > 二进制一排序

二进制一排序

 

 

#include#include#includeusing namespace std;typedef long long ll;typedef pair PII;vector ans;  //第一个值是二进制中一的个数,第二个数是原数 int get(int x){int cnt =0 ;while (x) {x = x & (x - 1);cnt++;}return cnt;}int main(){int n;int idx = 0;cin >> n;while (n--) {ll x;ll cnt;cin >> x;cnt = get(x);ans.push_back({ cnt,x });}sort(ans.begin(), ans.end());for (vector::iterator i = ans.begin(); i != ans.end(); i++) {cout <second<<" ";}return 0;}