输入:
两个数:m n (n为n进制)
输出:
转换后的数字(若进制超出10位,则按照A=10,B=11....以此类推)
思路:定义一个字符串,
包含0-F(依题意进行修改),然后辗转相除进行取余,使得余数与字符串里的元素相对应,以此类推知道不能再除;
代码:
#include <iostream>
#include <cstring>
#include <cmath>
using namespace std;
int main()
{
string z="0123456789ABCDEF"; //定义字符串
int m,n;
while(cin>>m>>n&&m!=0&&n!=0)
{
int a=fabs(m),i=0,y=m; //给m找两个替身,不然..............
char b[101];
while(a!=0) //开始辗转相除
{
int c=a%n;
/*cout<<c<<endl;*/
b[i]=z[c];
/*cout<<z[c]<<' '<<b[i]<<endl;*/ //1
a=a/n;
i++;
/*cout<<b[i]<<' '<<i<<endl;*/ //2
}
/*cout<<i<<endl;*/
if(y<0)
cout<<'-';
for(int x=i-1;x>=0;x--) //储存的时候是正着储存,所以输出要倒着输出(可以把1 2两行的/* */去掉来观察)
cout<<b[x];
cout<<endl;
}
return 0;
}