- 可可爱爱的传送门
- 本来十进制转其他进制还是比较简单的
- 就是负进制奇奇怪怪
- 最重要的是在余数为负数的时候——
原来的余数减去进制(即加上进制的绝对值)
商+1 - 具体是这样的:
if(a[i]<0)n++,a[i]-=r;
- 另一点是注意当余数>10时的输出需要用
(char)(a[j]-10+'A')
记得加“(char)”,否则会是一堆数字 - 当然用数组也是可以的
,但是我懒 - 其余见代码
代码
#include<bits/stdc++.h>
using namespace std;
int n,r,a[101],i;
int main()
{
while(cin>>n>>r){
i=0;
do{
a[++i]=n%r;
n/=r;
if(a[i]<0){//进位
n++,a[i]-=r;
}
}while(n!=0);
for(int j=i;j>=1;j--){
if(a[j]<10)cout<<a[j];
else cout<<(char)(a[j]-10+'A');
}
cout<<endl;
}
return 0;
}