通过键盘输入data(字符串型)和进制a,实现各种进制的转换
例如
Sample Input
|
2
1000 2 1F 16
-1 10 20 3
|
|
Sample Output
|
39
#include<bits/stdc++.h>
using namespace std;
void inver_arr(char *p)
{
int temp;
int len = strlen(p);
int i=0;
int j=len-1;
for(;i<j;i++,j--)
{
temp = p[i];
p[i] = p[j];
p[j] = temp;
}
}
int radix(char *p,int a)
{
int flag = 1;
int res=0;
int len = strlen(p);
if(p[len-1] == '-')
{
//p[len-1] = '\0';
len = len-1;
flag = -1;
}
else
len = strlen(p);
printf("%d,%c\n",len,p[0]);
for(int i=0;i<len;i++)
{
if( (p[i]>='0') && (p[i]<='9') )
res = (p[i]-'0')*pow(a,i)+res;
else if((p[i]>='A') && (p[i]<='Z'))
res = (p[i]-'A'+10)*pow(a,i)+res;
else
res = (p[i]-'a'+36)*pow(a,i)+res;
}
return res*flag;
}
int main()
{
int n,a,b;
char data1[100],data2[100];
scanf("%d",&n);
getchar();
while(n--)
{
scanf("%s%d",data1,&a);
getchar();
scanf("%s%d",data2,&b);
inver_arr(data1);
inver_arr(data2);
printf("%d\n",radix(data1,a)+radix(data2,b));
}
return 0;
}
5
|