问题 D: 进制转换
Posted ailinal
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了问题 D: 进制转换相关的知识,希望对你有一定的参考价值。
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
int main() {
int m, n;
while (scanf("%d", &m) != EOF) {
scanf("%d", &n);
char s[1000];
scanf("%s", s);
int ns = strlen(s);
int a[1000];
for (int i = 0; i < ns; ++i) {
if (s[i] >= '0' && s[i] <= '9') a[i] = s[i] - '0';
else a[i] = s[i] - 'A' + 10;
}
int out[1000];
int no = 0;
for (int i = 0; i < ns;) {
int k = 0;
for (int j = i; j < ns; ++j) {
int temp = k * m + a[j];
k = temp % n;
a[j] = temp / n;
}
out[no++] = k;
while (a[i] == 0)i++;
}
for (int l = no - 1; l >= 0; --l) {
if (out[l]>=0 && out[l]<=9)
printf("%d", out[l]);
else
printf("%c",out[l]-10+'a');
}
printf("
");
}
return 0;
}
以上是关于问题 D: 进制转换的主要内容,如果未能解决你的问题,请参考以下文章
Silverlight 中的十进制转换器无法正确处理丢失焦点
[POJ1220]NUMBER BASE CONVERSION (高精,进制转换)