题目连接http://acm.hdu.edu.cn/showproblem.php?pid=2031
本题主要是数学方法,掌握进制转换的数学方法,即可以解决
至于当进制转换都大于9的部分,可以用整型数组在输出时解决,也可以用字符数组解决,我用的是第一种方法
贴上进制转换的代码:
int a[1000];
int jz(int x,int y)
{
int i=0;
while(x)
{
a[i++]=x%y;
x=x/y;
}
return i;
}
用整型数组存储余数,先不处理大于9的部分余数,返回值i为数组的长度
先不考虑负号的情况
然后在输出时,倒序输出,
for(i=i-1;i>=0;i--)
{
if(a[i]==10)cout<<"A";
else if(a[i]==11)cout<<"B";
else if(a[i]==12)cout<<"C";
else if(a[i]==13)cout<<"D";
else if(a[i]==14)cout<<"E";
else if(a[i]==15)cout<<"F";
else cout<<a[i];
}
这样之后,负数的情况很好解决,用一个bool变量来标记一下就可以了。