模拟进制的转化,十进制数n,满r进1.
通过字符串处理满十以上的问题
负数转化为正数最后加‘-’符号
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#define pi 3.14159
char a[16]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
//处理满十以上的问题
int main(){
long long int n=0,r=0,count[17],l=0,k=0;
while(~scanf("%lld%lld",&n,&r)){
memset(count,0,sizeof(count));
if(n<0){
k=1;
n=-n;
}//处理负数
for(;n-r>=0;n-=r){//模拟进制转换
count[1]++;
for(int i=0;i<16;i++){
if(count[i]==r){
count[i+1]++;
count[i]=0;
}
}
}
count[0]+=n;
for(int i=15;i>=0;i--){
if(l||count[i]!=0){
if(k){
printf("-");
k=0;
}
printf("%c",a[count[i]]);
l=1;
}
}putchar('\n');
l=0;
}
return 0;
}