You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

74 lines
1.4 KiB

#include <iostream>
#include <string>
#include <cmath>
#include <algorithm>
using namespace std;
// <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>
int get_num(char c) {
if (isdigit(c)) {
return c - '0';
}
if ('a' <= c && c <= 'z') {
return c - 'a' + 10;
}
if ('A' <= c && c <= 'Z') {
return c - 'A' + 10;
}
return 0;
}
// <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>
char get_char(int num) {
return '0';
}
//<2F><><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݽ<EFBFBD><DDBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>
int to_num(string& number, int base) {
int n = number.size();
long long num = 0;
for (int i = 0; i < n; i++) {
char ch = number[i];
num *= base;
num += get_num(ch);
}
return num;
}
//<2F><><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>ݽ<EFBFBD><DDBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>
string tostring(int num, int base) {
if (num == 0) return "0";
string ans;
while (num > 0) {
ans += get_char(num % base);
num /= base;
}
reverse(ans.begin(), ans.end());
return ans;
}
string convertBase(string& num, int st_base, int en_base) {
return tostring(to_num(num, st_base), en_base);
}
int main() {
string number;
int st_base, en_base;
cout << "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֣<EFBFBD>";
cin >> number;
cout << "<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><EFBFBD><EFBFBD>ƣ<EFBFBD>2-16<31><36><EFBFBD><EFBFBD>";
cin >> st_base;
cout << "<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƣ<EFBFBD>2-16<31><36><EFBFBD><EFBFBD>";
cin >> en_base;
string ans = convertBase(number, st_base, en_base);
cout << "ת<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǣ<EFBFBD>" << ans << endl;
return 0;
}