1 #include <cmath> 2 #include <cstdio> 3 #include <cctype> 4 #include <iostream> 5 #include <string> 6 #include <sstream> 7 #include <algorithm> 8 #include <vector> 9 using namespace std; 10 11 #define GI ({int _t; scanf("%d", &_t); _t;}) 12 #define FOR(i, a, b) for (int i=a; i<b; i++) 13 #define REP(i, a) FOR(i, 0, a) 14 #define sz size() 15 #define pb push_back 16 #define cs c_str() 17 #define DBGV(_v) { REP(_i, _v.sz) { cout << _v[_i] << "\t";} cout << endl;} 18 template<class T> void stov(string s,vector<T> &vi){vi.clear();istringstream sin(s);for(T v;sin>>v;vi.push_back(v));} 19 20 int getval(char c) { 21 if (isdigit(c)) { 22 return c-'0'; 23 } 24 if (isupper(c)) { 25 return c-'A'+10; 26 } 27 } 28 29 long long int value(string num, int base) { 30 int res=0; 31 for (int i=num.sz-1, j=0; i>=0; i--, j++) { 32 res += (long long int)(getval(num[i]) * pow((double)base, (double)j)); 33 } 34 return res; 35 } 36 37 int main() { 38 string s1, s2; 39 while (cin >> s1 && cin >> s2) { 40 int start1 = getval(*max_element(s1.begin(), s1.end())); 41 int start2 = getval(*max_element(s2.begin(), s2.end())); 42 FOR(i, max(start1+1,2), 37) { 43 FOR(j, max(start2+1,2), 37) { 44 //cout << s1 << " " << i << " " << value(s1, i) << " :: " << s2 << " " << j << " " << value(s2, j) << endl; 45 if (value(s1, i) == value(s2, j)) { 46 printf ("%s (base %d) = %s (base %d)\n", s1.cs, i, s2.cs, j); 47 goto NEXT; 48 } 49 } 50 } 51 printf ("%s is not equal to %s in any base 2..36\n", s1.cs, s2.cs); 52 NEXT: ; 53 } 54 }