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.

67 lines
1.6 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

#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() {
//cout << rToTen("10010", 2) << endl;
//cout << tenToR(18, 2) << endl;
//15进制转10进制
//cout << rToTen("10", 15) << endl;
//正正反反.
cout << tenToR(rToTen("23456", 15), 18) << endl;
}