思路
- 214>10000,存放进制位的数组ans[15]
- 先找到最大位数h,然后从h开始往低位计算每位的数字+更新n值,并输出
- 0要特殊处理
代码
#include<cstdio>
#include<cmath>
using namespace std;
int ans[15];
int main(){
int n, k, h;
while(scanf("%d%d", &n, &k)!=EOF){
if(n==0){
printf("0\n");
continue;
}
h = (int)(log((double)n)/log((double)k));
for(int i=h; i>=0; i--){
ans[i] = n/pow((float)k, i);
n = n - ans[i]*pow((float)k, i);
if(ans[i]<10)
printf("%c", ans[i]+'0');
else
printf("%c", ans[i]-10+'A');
}
printf("\n");
}
return 0;
}