diff --git a/oct-6.cpp b/oct-6.cpp new file mode 100644 index 0000000..93a13ba --- /dev/null +++ b/oct-6.cpp @@ -0,0 +1,303 @@ +#include +#define ll long long int +using namespace std; + +ll maxDigit(string s) { + ll mx = 0; + for(ll i = 0 ; i < s.size() ; i++) { + if(s[i] >= '0' && s[i] <= '9') { + ll v = s[i] - 48; + mx = max(mx , v); + } + else{ + ll v = s[i] - 55; + mx = max(mx , v); + } + } + return mx; +} + +ll calcnz (string s , ll b) { + ll digit = 0; + ll ans = 0; + ll po = s.size() - 1; + ll j = 0; + for(ll i = po; i >= 0; i--) { + if(s[i] >= '0' && s[i] <='9') { + digit = s[i] - 48; + } + else{ + digit = s[i] - 65 + 10; + } + + ll p = pow(b , j); + j++; + ans += (p * digit); + } + return ans; +} + +ll calc (string s , ll b , ll start) { + if(b < start) { + return -1; + } + + ll digit = 0; + ll ans = 0; + ll po = s.size() - 1; + ll j = 0; + + for(ll i = po; i >= 0; i--) { + if(s[i] >= '0' && s[i] <= '9') { + digit = s[i] - 48; + } + else{ + digit = s[i] - 55; + } + + ll p = pow(b , j); + if(p < 0) { + return -1; + } + j++; + ans += (p * digit); + if(ans > 1000000000000) { + return -1; + } + } + if(ans < 0) { + return -1; + } + return ans; +} + +int main(){ + ll t; + cin >> t; + while(t--) { + ll n; + cin >> n; + ll temp = n; + vector< pair > v; + while (temp--) { + ll base; + string str; + cin >> base >> str; + v.push_back(make_pair(base , str)); + } + + ll sze = v.size(); + ll flag = 0; + + vector < pair > non_zero; + + for (ll i = 0 ; i < sze; i++) { + if(v[i].first != -1) { + flag = 1; + non_zero.push_back(make_pair(v[i].first , v[i].second)); + } + } + + ll ans = 0; + + + vector values; + if(non_zero.size()) { + for(ll i = 0; i < non_zero.size() ; i++) { + ll inter = calcnz(non_zero[i].second , non_zero[i].first); + values.push_back(inter); + } + } + + + if(values.size() > 1) { + ll real = 0; + for(ll i = 1 ; i < values.size() ; i++) { + if(values[i] != values[i-1]) { + real = 1; + } + } + if(real) { + cout << -1 << endl; + continue; + } + else{ + ans = values[0]; + } + } + else{ + if(values.size()) { + ans = values[0]; + } + } + + if(flag) { + ll arr[n][37]; + for(ll i = 0; i < n ; i++){ + for(ll j = 0 ; j < 37 ; j++) { + arr[i][j] = 0; + } + } + + for(ll i = 0 ; i < n ; i++) { + ll start = maxDigit(v[i].second) + 1; + for(ll j = 2 ; j <= 36 ; j++ ) { + ll store = 0; + + string str = v[i].second; + + store = calc (str , j , start); + arr[i][j] = store; + store = 0; + } + } + + + ll breaker = 0; + ll finalstatus = 0; + for (ll i = 0; i < n ; i++) { + breaker = 0; + for (ll j = 2 ; j <= 36 ; j++) { + if(ans == arr[i][j]) { + breaker = 1; + break; + } + } + if(breaker == 1) { + continue; + } + else{ + finalstatus = 1; + break; + } + } + + if(finalstatus) { + cout << -1 << endl; + } + else{ + cout << ans << endl; + } + } + else { + ll arr[n][37]; + for(ll i = 0; i < n ; i++){ + for(ll j = 0 ; j < 37 ; j++) { + arr[i][j] = 0; + } + } + + for(ll i = 0 ; i < n ; i++) { + ll start = maxDigit(v[i].second) + 1; + for(ll j = 2 ; j <= 36 ; j++) { + ll store = 0; + + string str = v[i].second; + + store = calc(str , j , start); + arr[i][j] = store; + + store = 0; + } + } + + // for(ll i = 0; i < n ; i++){ + // for(ll j = 2 ; j <= 36 ; j++) { + // cout << arr[i][j] << " "; + // } + // cout< x; + unordered_map final; + unordered_map :: iterator itr; + + for(ll i = 2 ; i < 37 ; i++) { + if(arr[0][i] != -1) { + x[arr[0][i]] = 1; + } + } + + if(x.size() == 0) { + cout<< -1 < first] = 1; + } + final.clear(); + } + + + if(flag) { + cout << -1 << endl; + continue; + } + + ll mn = 1000000000000; + map mp; + for(itr = x.begin() ; itr != x.end() ; itr++) { + ll v = itr -> first; + if(mn > v) { + mn = v; + } + mp[v] = 1; + } + // cout << mn << endl ; + map :: iterator it; + for(it = mp.begin() ; it != mp.end() ; it++) { + cout << it -> first << endl; + break; + } + } + } + return 0; +} + + + + +// string s = v[index].second; +// ll b = v[index].first; +// +// ans = calc (s , b , 0); + +// if(ans == -1) { +// cout << -1 < +#define ll long long +using namespace std; +int main(){ + ll t; + cin t; + cin>>t; + while(t--){ + ll n,q; + cin>>n>>q; + ll arr[n-1] = {0}; + for(ll i=0;i>arr[i]; + } + while(q--){ + ll a,b; + ll diff = abs(a - b); + if(diff%2 == 1){ + ll mx = max(a,b); + ll mn = min(a,b); + mx--; + mn--; + cout<