解題心得
先把數字轉回十進位,再轉成要求的進位制表示法。
程式碼
#include <iostream> using namespace std; int to_decimal(string s, int base) { int ans = 0; for (int i = 0; i < s.size(); i++) { if ('0' <= s[i] && s[i] <= '9') ans = ans * base + s[i] - '0'; else ans = ans * base + s[i] - 'A' + 10; } return ans; } string convert(int n, int base) { string s = ""; while (n > 0) { int tmp = n % base; if (tmp >= 10) s = char(tmp - 10 + 'A') + s; else s = char(tmp + '0') + s; n /= base; } while (s.size() < 7) s = "0" + s; while (s.size() > 7) s = s.erase(0, 1); return s; } int main() { string origin; int origin_base, new_base; while (cin >> origin) { cin.ignore(); cin >> origin_base >> new_base; int decimal = to_decimal(origin, origin_base); cout << convert(decimal, new_base) << endl; } return 0; }
沒有留言:
張貼留言