1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
| #include<bits/stdc++.h> using namespace std; typedef long long ll;
ll k_to_ten(int a[],int len,int k){ ll ans = 0; for(int i = 0 ; i < len ; i ++){ ans = ans*k + a[i]; } return ans; }
int ten_to_k(int a[],int k,ll x){ int len = 0; while(x){ a[len++] = x%k; x /= k; } reverse(a,a+len); return len; }
int t,k1,k2; string s; int num[1000],ans[1000];
int main(){ ios::sync_with_stdio(false); cin>>t; while(t--){ cin>>k1>>k2; cin>>s; int len = s.length(); for(int i = 0 ; i < len ; i ++){ if(s[i] >= '0' && s[i] <= '9') num[i] = int(s[i] - '0'); else if(s[i] >= 'A' && s[i] <= 'F') num[i] = int(s[i] - 'A' ) + 10; } ll temp = k_to_ten(num,len,k1); int ans_len = ten_to_k(ans,k2,temp); for(int i = 0 ; i < ans_len ; i ++){ if(ans[i] >= 0 && ans[i] <= 9) cout<<ans[i]; else cout<<char( int('A') + ans[i] - 10); } cout<<endl; } }
|