题解 AT5308 【[ABC156B] Digits】## 顺便讲一下进制转换
十进制转K进制
十进制转K进制的方法是“除K取余,逆序排列”,就是用K除去要进行转换的十进制数,得到一个商和余数,再用K除以商得到又一个商和余数,一直继续下去,直到商为0,将得到的所有余数逆序排列,得到的就是N进制数了。
例:将十进制数217转为二进制,计算过程如下:
将余数逆序排列,得到二进制结果11011001。
转进制代码:
//十进制转换为k进制
#include<bits/stdc++.h>
using namespace std;
char d[16]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
//2到16进制制
int t(int n,int k);//转进制函数
int main()
{
int x,m;
cin>>x>>m;
t(x,m);
cout<<endl;
return 0;
}
int t(int n,int k)
{
int r;
r=n%k;
n=n/k;
if(n!=0) t(n,k);
cout<<d[r];
}
AC代码:
#include<bits/stdc++.h>
using namespace std;
int ans;
int t(int n,int k);
int main()
{
int x,m;
cin>>x>>m;
t(x,m);
cout<<ans<<endl;
return 0;
}
int t(int n,int k)
{
int r;
r=n%k;
n=n/k;
if(n!=0) t(n,k);
ans++;
}