Submission

Status:
----------

Score: 0

User: Cmoss9

Problemset: C.Sort Number

Language: cpp

Time: 0.072 second

Submitted On: 2024-11-10 22:16:00

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

int convertToBase10(int base, const string& num) {
    int result = 0;
    for (char c : num) {
        result *= base;
        if ('0' <= c && c <= '9') result += c - '0';
        else if ('A' <= c && c <= 'F') result += c - '7';
    }
    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;
}

int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(NULL); cout.tie(NULL);
    
    int n;
    cin >> n;
    
    vector<int> sum(n);
    for (int i = 0; i < n; i++) {
        int base;
        string num;
        cin >> base >> num;
        
        int base10 = convertToBase10(base, num);
        sum[i] = sumOfDivisors(base10);
    }
    
    sort(sum.rbegin(), sum.rend());
    
    for (int s : sum) {
        cout << s << endl;
    }
    return 0;
}