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.

64 lines
1.5 KiB

2 years ago
#include <bits/stdc++.h>
using namespace std;
//函数r进制转换成10进制
int rToTen(string n, int r) {
//将r进制转为10进制n是该r进制的字符串表示
int len = n.length();
int ans = 0;
int i = 0;
while (i < len) {
ans *= r;
if (n[i] >= '0' && n[i] <= '9') ans += n[i] - '0';
if (n[i] >= 'A' && n[i] <= 'Z') ans += n[i] - 'A' + 10 ;
if (n[i] >= 'a' && n[i] <= 'z') ans += n[i] - 'a' + 10 + 26;
i++;
}
return ans;
}
//函数:十进制转任意进制
string tenToR(int n, int r) {
if (n == 0) return "0";
//十进制n转r进制 返回字符串s
string str = "";
stack<int> s;
while (n) {
s.push(n % r);
n = n / r;
}
while (!s.empty()) {
switch (s.top()) {
case 10:
str += 'A';
break;
case 11:
str += 'B';
break;
case 12:
str += 'C';
break;
case 13:
str += 'D';
break;
case 14:
str += 'E';
break;
case 15:
str += 'F';
break;
default:
str += s.top() + '0';
}
s.pop();
}
return str;
}
int main() {
string n;
cin >> n;
cout << rToTen(n, 3) << endl;
return 0;
}