Advertisement
zhukov000

Untitled

Jan 22nd, 2020
184
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.19 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. string transform(const string & s, int base) {
  16. int n = std::stoi(s);
  17. string mod = "";
  18. while (n > 0) {
  19. int x = n % base;
  20. if (x >= 10) mod.push_back((char)('A' + x - 10));
  21. else mod.push_back(char(x + '0'));
  22. n /= base;
  23. }
  24. reverse(mod.begin(), mod.end());
  25. return mod;
  26. }
  27.  
  28. int amount(const string & s) {
  29. set<char> A;
  30. for (int i = 0; i < s.length(); ++i)
  31. A.insert(s[i]);
  32. return A.size();
  33. }
  34.  
  35.  
  36. signed main() {
  37. std::ios::sync_with_stdio(false);
  38. cin.tie(0);
  39. int n; cin >> n;
  40. string pta, s;
  41. for (int i = 0; i < n; ++i) {
  42. cin >> pta;
  43. int mn = 1e9 + 7;
  44. int mnBase = 0;
  45. string ans = pta;
  46.  
  47. for (int base = 2; base <= 36; ++base) {
  48. s = transform(pta, base);
  49. if ( s.length() + amount(s) < mn) {
  50. mn = s.length() + amount(s);
  51. mnBase = base;
  52. ans = s;
  53. }
  54. }
  55. cout << mnBase << " " << ans << endl;
  56. }
  57. return 0;
  58. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement