Submission

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

Score: 0

User: Dormon

Problemset: C.Sort Number

Language: cpp

Time: 0.042 second

Submitted On: 2024-10-15 09:21:22

#include <iostream>
#include <unordered_map>
#include <queue>

using namespace std;
using ll = long long;
unordered_map<char, int> ump = {{'0', 0}, {'1', 1}, {'2', 2}, {'3', 3}, {'4', 4}, {'5', 5}, {'6', 6}, {'7', 7}, {'8', 8}, {'9', 9},
                                {'A', 10}, {'B', 11}, {'C', 12}, {'D', 13}, {'E', 14}, {'F', 15}};

priority_queue<ll> pq;

void solve(){
    int b; scanf("%d", &b);
    string s; cin >> s;
    int n = s.size();
    ll sum = 0, base = 1;
    for (int i = n-1;i >= 0;i--){
        sum += ump[s[i]]*base;
        base *= b;
    }
    ll ans = 0ll;
    for (int i = 1;i*i <= sum;i++){
        if (sum%i == 0){
            ans += i+0ll, ans += sum/i+0ll;
            if (i*i == sum) ans -= i+0ll;
        }
    }
    pq.push(ans);
}

int main()
{
    int q; scanf("%d", &q);
    while (q--){
        solve();
    }
    while (!pq.empty()){
        printf("%lld\n", pq.top());
        pq.pop();
    }
}