# 官方题解|欢乐赛#44 T6
2025-04-09 22:07:18
发布于:浙江
9阅读
0回复
0点赞
T6
思路分析
本题可以用结构体存储数组中原来的值、转化为 进制数的值和转化为 进制数以后的最低位的值,然后分别求出这些信息,按照题目要求进行结构体排序。转八进制的思路可以参考转二进制的思路:将原来的数不断的对 取模,最后记得翻转一下。
代码
#include <bits/stdc++.h>
using namespace std;
const int N = 200010;
struct Node{
int val;
int last;
string Octal;
}a[N];
int n;
int main(){
cin >> n;
for(int i = 1; i <= n; i ++ ){
cin >> a[i].val;
a[i].last = a[i].val % 8;
int x = a[i].val;
string tmp;
while(x){
tmp = tmp + to_string(x % 8);
x /= 8;
}
reverse(tmp.begin(), tmp.end());
a[i].Octal = tmp;
}
sort(a + 1, a + 1 + n, [&](Node A, Node B){
if(A.last != B.last) return A.last > B.last;
return A.val < B.val;
});
for(int i = 1; i <= n; i ++ ){
cout << a[i].Octal << ' ';
}
return 0;
}
这里空空如也
有帮助,赞一个