1813. M进制数问题(M进制先转成10进制,操作完后再转M进制)
来源:互联网 发布:java课程设计 编辑:程序博客网 时间:2024/05/29 16:46
/*1813. M进制数问题 大意:给定M进制,转成10进制再求商和模 思路:转成10进制求商和模,再转成M进制 */#include <iostream>#include <stdlib.h>#include <string>#include <math.h>#include <map>using namespace std;map<char, int> m;map<int, char> m1;void initMap(){ char k = '0'; for(int i=0; i<=9; i++){ m[k] = i; k++; } k = 'A' ; for(int i=10; i<=35; i++){ m[k] = i; k++; } }void initMap2(){ char k = '0'; for(int i=0; i<=9; i++){ m1[i] = k; k++; } k = 'A' ; for(int i=10; i<=35; i++){ m1[i] = k; k++; } }int transferTo10(string a, int M){ int result = 0; int length = a.length(); for(int i=length-1; i>=0; i--) { result += (int)(m[a[i]]*pow((double)M,length-1-i)); } return result;}string transferToM(int x, int M){ if(x == 0) return "0"; string result = ""; while(x !=0 ){ int l = x % M; result = m1[l] + result; x /= M; } return result;}int main(){ initMap(); initMap2(); int testNum; int M; cin >> testNum; for(int i=1; i<= testNum; i++){ cin >> M; string a, b; cin >> a >> b; int A = transferTo10(a,M); int B = transferTo10(b,M); int d = A/B; int r = A%B; string strD = transferToM(d, M); string strR = transferToM(r, M); cout << strD << endl << strR << endl; } system("pause"); return 0;}