Advertisement
Guest User

task689

a guest
Jan 22nd, 2020
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.37 KB | None | 0 0
  1. #define loop(i,from,to) for (int i = from; i < to; ++i)
  2. #include <bits/stdc++.h>
  3.    
  4. using std::cin;
  5. using std::cout;
  6. using std::endl;
  7. using std::vector;
  8. using std::string;
  9. using std::tuple;
  10. using std::set;
  11.  
  12. const int INF = 1e9+7;
  13. const double eps = 1e-6;
  14.  
  15. template <typename T> void reverse(T &a) {
  16.   long long s = a.size();
  17.   for (long long i = 0; i < s / 2; ++i)
  18.     std::swap(a[i], a[s - i - 1]);
  19. }
  20.  
  21. string transform(string s, int base) {
  22.   int n = std::stoi(s), x;
  23.   string mod;
  24.   while (n >= base) {
  25.     x = n % base;
  26.     if (x >= 10) mod.push_back((char)('A' + x - 10));
  27.     else mod.push_back(char(x + '0'));
  28.     n /= base;
  29.   }
  30.   if (n >= 10) mod.push_back((char)('A' + n - 10));
  31.   else mod.push_back(char(n + '0'));
  32.   reverse(mod);
  33.   return mod;
  34. }
  35.  
  36. int amount(string s) {
  37.   set<char> A;
  38.   for (int i = 0; i < s.length(); ++i)
  39.     A.insert(s[i]);
  40.   return A.size();
  41. }
  42.  
  43.  
  44. signed main() {
  45.   std::ios::sync_with_stdio(false);
  46.   cin.tie(0);
  47.   int n; cin >> n;
  48.   string pta, s, mx;
  49.   int mxBase;
  50.   for (int i = 0; i < n; ++i) {
  51.     cin >> pta;
  52.     for (int base = 2; base <= 36; ++base) {
  53.       s = transform(pta, base);
  54.       if ((s.length() + amount(s)) < (pta.length() + amount(pta))) {
  55.         mx = s;
  56.         mxBase = base;
  57.       }
  58.     }
  59.     cout << mxBase << " " << mx << endl;
  60.   }
  61.   //std::cout << "Hello World!\n";
  62.   return 0;
  63. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement