解題心得
先把數字轉回十進位,再轉成要求的進位制表示法。
程式碼
#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;
}
沒有留言:
張貼留言