【FOJ】Problem 1477 进制转化

Problem 1477 进制转化.

思路

  • 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;
}
发布了46 篇原创文章 · 获赞 0 · 访问量 461

猜你喜欢

转载自blog.csdn.net/qq_44531167/article/details/105497608