Description
输入一个R进制的数N,将它转换成10进制数。
Input
输入数据包含多个测试实例,对于每组测试用例:
输入两个整数 R(2 <= R <= 16, R ≠ 10)和 N (N的十进制 <= 109) 。
Output
输出转换后的数,每个输出占一行。
Sample Input
8 123
8 -123
16 ABC
Sample Output
83 -83 2748#include <stdio.h> #include <string.h> int GetValue(char x); int Convert(char a[], int m); int main(){ char a[32]; int n,flag; while(scanf("%d %s",&n,&a)!=EOF){ flag=0; if(a[0]=='-'){ flag=1; } if(flag==1){ printf("-%d\n", Convert(a,n)); } else{ printf("%d\n", Convert(a,n)); } } return 0; } int GetValue(char x){ if(x >= '0' && x <= '9') return x-'0'; if(x >= 'a' && x <= 'f') return x-'a'+10; if(x >= 'A' && x <= 'F') return x-'A'+10; return 0; } int Convert(char a[], int m){ int i,n=0,len; len=strlen(a); for(i=0;i<len;i++){ n=n*m+GetValue(a[i]); } return n; }