Submission
Status:
PPPPPPPPPP
Score: 100
User: Monasm
Problemset: C.Sort Number
Language: cpp
Time: 0.065 second
Submitted On: 2024-10-15 00:23:42
#include<bits/stdc++.h>
#define int long long
using namespace std;
int convertToBase10(const string& num, int base) {
int result = 0;
int power = 1;
for (int i = num.length() - 1; i >= 0; --i) {
char c = num[i];
int digit;
if (isdigit(c)) digit = c - '0';
else digit = c - 'A' + 10ll;
result += digit * power;
power *= base;
}
return result;
}
int sumOfDivisors(int num) {
int sum = 0;
for (int i = 1; i <= sqrt(num); ++i) {
if (num % i == 0) {
sum += i;
if (i != num / i) sum += num / i;
}
}
return sum;
}
int32_t main() {
cin.tie(nullptr)->sync_with_stdio(false);
int T; cin >> T;
vector<pair<int, string>> numbers(T);
for (int i = 0; i < T; ++i) {
int base;
string number;
cin >> base >> number;
numbers[i] = {base, number};
}
vector<pair<int, int>> results;
for (const auto& p : numbers) {
int base = p.first;
string number = p.second;
int base10Num = convertToBase10(number, base);
int sumDivisors = sumOfDivisors(base10Num);
results.push_back({sumDivisors, base10Num});
}
sort(results.rbegin(), results.rend());
for (const auto& res : results) cout << res.first << '\n';
}