输入
输入数据包含多个测试实例,对于每组测试用例:
分别输入三个整数:R(2 <= R <= 16), N (N的十进制 <= 10^9), X(2 <= X <= 16, X ≠ R) 。
输出
输出转换后的数,每个输出占一行。
输入样例
11 A 10
2 1000 11
2 1111 12
输出样例
10
8
13
显而易见,这个是我的前两个文章的结合版,所以我们仍然调用了前面说写的函数,由于函数的命名不能重复,所以我改了个名字,代码如下文所示:
#include <stdio.h>
#include <string.h>
#include <math.h>
void _conversion(long long result,int X){
int c=result%X;
if(result>=X){
_conversion(result/X,X);
}
if(c<10){
printf("%d",c);
}
else{
char d='A'+c-10;
printf("%c",d);
}
}
void Base_conversion(int R, char N[],int X) {
int len =strlen(N);
long long result=0;
int power=0;
int f = 0;
if (N[0] =='-') {
f = 1;
}
for (int i=len-1; i>=f; i--) {
int num =0;
if (N[i] >='0'&& N[i] <= '9') {
num = N[i]-'0';
}
else if (N[i] >='A'&& N[i] <= 'F') {
num = N[i] -'A' + 10;
}
result= result+num*(int)pow(R, power);
power++;
}
if (f==1) {
printf("-");}
_conversion(result,X);
printf("\n");
}
int main() {
int R,X;
char N[30];
while (scanf("%d %s %d", &R, N,&X)==3) {
Base_conversion(R, N,X);
}
return 0;
}