akashtadwai

Missing Number

Oct 9th, 2019
244
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.25 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. typedef std::pair<int, int> ipair;
  4. #define int long long
  5. #define pb push_back
  6. #define ff first
  7. #define ss second
  8. #define fr(i, j, k) for (int i = j; i < k; i++)
  9. #define cnt_ones(x) __builtin_popcount(x)
  10. #define all(x) x.begin(), x.end()
  11. #define mp make_pair
  12. #define mod 1000000007
  13. #define IOS                                                                    \
  14.   std::ios::sync_with_stdio(false);                                            \
  15.   cin.tie(NULL);                                                               \
  16.   cout.tie(NULL);
  17. vector<int> a;
  18. int val(char c) {
  19.   if (c >= '0' && c <= '9')
  20.     return (int)c - '0';
  21.   else
  22.     return (int)c - 'A' + 10;
  23. }
  24. void init() {
  25.   int T;
  26.   cin >> T;
  27.   while (T--) {
  28.     int N, B, ans = -1;
  29.     cin >> N;
  30.     string s;
  31.     for (int i = 1; i <= N; i++) {
  32.       cin >> B >> s;
  33.       if (B != -1) {
  34.         int len = s.size();
  35.         int power = 1;
  36.         int num = 0;
  37.         int i;
  38.         for (i = len - 1; i >= 0; i--) {
  39.           num += val(s[i]) * power;
  40.           power = power * B;
  41.           if (num > 1e12)
  42.             break;
  43.         }
  44.         if(i==-1) ans = num;
  45.       } else {
  46.         int maxi = -1;
  47.         for (int i = s.size() - 1; i >= 0; i--)
  48.           maxi = max(val(s[i]), maxi);
  49.          if (s.size() == 1)
  50.          a.pb(val(s[s.size() - 1]));
  51.         for (int j = maxi + 1; j <= 36; j++) {
  52.           int len = s.size();
  53.           int power = 1;
  54.           int num = 0;
  55.           int i;
  56.         if (pow(j,len-1)<1e12){
  57.           for (i = len - 1; i >= 0; i--) {
  58.             num += val(s[i]) * power;
  59.             power = power * j;
  60.             if (num > 1e12)
  61.               break;
  62.           }
  63.         }
  64.           if(i==-1) a.pb(num);
  65.       }
  66.       }
  67.     }
  68.     if (ans != -1)
  69.       cout << ans << endl;
  70.     else {
  71.       int flag = 0, num;
  72.       for (int i = 0; i < a.size(); i++) {
  73.         int cnt = count(a.begin(), a.end(), a[i]);
  74.         if (cnt == N) {
  75.           num = a[i];
  76.           flag = 1;
  77.           break;
  78.         }
  79.       }
  80.       if (flag == 1)
  81.         cout << num << endl;
  82.       else
  83.         cout << -1 << endl;
  84.       a.clear();
  85.     }
  86.   }
  87. }
  88. int32_t main() {
  89.   IOS;
  90.   init();
  91.   return 0;
  92. }
Add Comment
Please, Sign In to add comment