一、10进制数转化为任意进制
首先,隆重介绍把十进制数 x 转换为 y 进制数,短除法。
举个例子:把 92 转换为 8进制为 (134)
#include<bits/stdc++.h>
using namespace std;
string change(int x,int y)//把10进制x转换为y进制
{
string ans;
while(x > 0) {
int m = x % y;
if(m >= 10) ans.push_back(m - 10 + 'A');//余数大于10的要变为字母
else ans.push_back(m + '0');
x /= y;
}
reverse(ans.begin(),ans.end());//倒叙才是1答案
return ans;
}
int main( ) {
int a,b;
cin >> a >> b;
cout << change(a,b);
return 0;
}
二、任意进制转十进制
#include<bits/stdc++.h>
using namespace std;
int solve(string s,int x) { //s为x进制转为10进制
int len = s.size();
int sum = 0,cnt = 1;
for(int i = len - 1; i >= 0; i--) {
if(s[i] >= 'A' && s[i] <= 'Z')
sum += (s[i] - 'A' + 10) * cnt;
else
sum += (s[i] - '0') * x;
cnt *= x;
}
return sum;
}
int main( ) {
return 0;
}