Decimal integer conversion


1000 ms  |  内存限制: 65535


The first line of the input contains one integers T, which is the nember of test cases (1<=T<=8)

Each test case specifies:


* Line 1: The base-2 representation of N , with one digit written incorrectly.


* Line 2: The base-3 representation of N , with one digit written incorrectly.

输出 For each test case generate a single line containing a single integer , the correct value of N

样例输入

1
1010
212

样例输出

14

来源 ​​河南省第九届省赛​

上传者 ​​onlinejudge​


题意就是小明将一个十进制的数转化为2进制或者三进制的时候总会错一个数字  求这个十进制数。暴力即可

水题一枚

#include <stdio.h>
#include <string.h>
#include <math.h>
char a[105];
char b[105];
long long getnum(char *c,int x,int len)
{
long long res=0;
for(int i=0;i<len;i++)
{
res+=(c[i]-'0')*pow(x,len-i-1);
}
return res;
}
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
scanf("%s",a);
scanf("%s",b);
int len1=strlen(a);
int len2=strlen(b);
char ch1,ch2;
long long num1,num2;
int find=-1;
for(int i=0;i<len1;i++)
{
ch1=a[i];
if(a[i]=='0') a[i]='1';
else a[i]='0';
num1=getnum(a,2,len1);
// printf("num1=%d\n",num1);
for(int j=0;j<len2;j++)
{
ch2=b[j];
b[j]='0';
if(ch2!=b[j])
{
num2=getnum(b,3,len2);
if(num1==num2)
{
find=num1;
break;
}
}
if(find!=-1) break;
b[j]='1';
if(ch2!=b[j])
{
num2=getnum(b,3,len2);
if(num1==num2)
{
find=num1;
break;
}
}
if(find!=-1) break;
b[j]='2';
if(ch2!=b[j])
{
num2=getnum(b,3,len2);
if(num1==num2)
{
find=num1;
break;
}
}
b[j]=ch2;
}
if(find!=-1)
{
break;
}
a[i]=ch1;
}
printf("%d\n",find);
}
}