Submission

Status:
PPPPPPPPPP

Score: 100

User: amongus

Problemset: C.Sort Number

Language: cpp

Time: 0.044 second

Submitted On: 2024-10-15 17:21:19

#include <bits/stdc++.h>
using namespace std;
#define sz(x) (int)x.size()
typedef long long ll;

ll convert(char c) {
  if (c >= 'A') {
    return (int)(c - 'A') + 10;
  }
  return (int)(c - '0');
}

ll F(string s, int n) {
  ll b10 = 0;
  for (int i = 0; i < sz(s); i++) {

    b10=b10*n;
    b10 += convert(s[i]);
  }
  // cerr << b10 << "\n";
  ll ans = 0;
  set<ll> f;
  for (ll i = 1; i * i <= b10; i++) {
    if (b10 % i == 0) {
      f.insert(i);
      f.insert(b10 / i);
    }
  }
  for (ll e : f) {
    ans += e;
  }
  return ans;
}

int main() {
  int T;
  cin >> T;
  vector<ll> v(T);
  for (int i = 0; i < T; i++) {
    int n;
    string s;
    cin >> n;
    cin >> s;
    v.push_back(F(s, n));
  }
  sort(v.rbegin(), v.rend());
  for (int i = 0; i < T; i++) {
    cout << v[i] << "\n";
  }
  return 0;
}