非官方题解的个人题解
2025-04-10 00:06:56
发布于:广东
11阅读
0回复
0点赞
把我在欢乐赛的代码抄了过来
可以直接用“维克托”(vector)
#include<iostream>
#include<vector>
#include<algorithm>
#include<string>
using namespace std;
string decimalToOctal(int num) {
if (num == 0) return "0";
string octal;
while (num > 0) {
octal = to_string(num % 8) + octal;
num /= 8;
}
return octal;
}
bool compare(const string &a, const string &b) {
char last_a = a.back();
char last_b = b.back();
if (last_a != last_b) {
return last_a > last_b;
} else {
if (a.length() != b.length()) {
return a.length() < b.length();
}
return a < b;
}
}
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int n;
cin >> n;
vector<int> A(n);
for (int i = 0; i < n; ++i) {
cin >> A[i];
}
vector<string> B(n);
for (int i = 0; i < n; ++i) {
B[i] = decimalToOctal(A[i]);
}
sort(B.begin(), B.end(), compare);
for (int i = 0; i < n; ++i) {
if (i != 0) cout << " ";
cout << B[i];
}
cout << endl;
return 0;
}
开心一点
这里空空如也
有帮助,赞一个