inline string to_kbit(string &x,int &bit,int &nbit) { int num = 0; // 存储转化为 十进制的数值 if(bit != 10) // 如果不是十进制的数值,这开始转化为十进制的数值 { int len = x.size(); for(int i = 0;i < len;++i) { int have = x[i]; if(isupper(have)) have = have - 'A' + 10; else have -= '0'; num = num * bit + have; } bit = 10; }else num = stoll(x); // 如果是十进制的数值我们先转化为 int 型,方便我们转化为 nbit 进制的数值 if(bit == nbit) returnto_string(num); string ans = ""; // 存储转化为 nbit 进制的结果数值 do { int temp = num % nbit; num /= nbit; ans += (temp >= 10 ? temp + 'A' - 10: temp + '0'); }while(num); reverse(ans.begin(),ans.end()); return ans; }
#include<iostream> #include<algorithm> #define int long long #define endl '\n' #define IOS ios::sync_with_stdio(false),cin.tie(0), cout.tie(0) usingnamespace std;
inline string to_kbit(string &x,int &bit,int &nbit) { int num = 0; // 存储转化为 十进制的数值 if(bit != 10) // 如果不是十进制的数值,这开始转化为十进制的数值 { int len = x.size(); for(int i = 0;i < len;++i) { int have = x[i]; if(isupper(have)) have = have - 'A' + 10; else have -= '0'; num = num * bit + have; } bit = 10; }else num = stoll(x); // 如果是十进制的数值我们先转化为 int 型,方便我们转化为 nbit 进制的数值 if(bit == nbit) returnto_string(num); string ans = ""; // 存储转化为 nbit 进制的结果数值 do { int temp = num % nbit; num /= nbit; ans += (temp >= 10 ? temp + 'A' - 10: temp + '0'); }while(num); reverse(ans.begin(),ans.end()); return ans; }
signedmain() { // freopen("a.txt","r",stdin); IOS; int _T; cin >> _T; while(_T--) { string s; int bit,nbit; cin >> bit >> nbit >> s; string ans = to_kbit(s,bit,nbit); cout << ans << endl; } return0; }