题目:
题意:一个2进制和3进制的字符串表示同一十进制的数,但各有一位是错的,问这个十进制的数是多少。
题目分析:签到题,按位枚举2进制字符串的每一位,转换0和1,同时转换位3进制比对,如果只有一位不同就是答案。
//
// main.cpp
// F Decimal integer conversion
//
// Created by teddywang on 16/6/8.
// Copyright © 2016年 teddywang. All rights reserved.
//
#include <iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
char s[10010],t[10010];
int cmp(char *s,char *t)
{
long long int ans=0;
int len1=strlen(s);
for(int i=0;i<len1;i++)
{
ans=ans*2+s[i]-'0';
}
char buf[10000];
int len2=0;
long long int cnt=ans;
while(ans)
{
buf[len2++]=ans%3+'0';
ans/=3;
}
int flag=0;
for(int i=0;i<len2;i++)
{
if(buf[i]!=t[len2-1-i])
{
flag++;
if(flag>1) break;
}
}
if(flag==1)
{
cout<<cnt<<endl;
return 1;
}
else return 0;
}
int main()
{
int N;
cin>>N;
while(N--)
{
scanf("%s",s);
scanf("%s",t);
int len=strlen(s);
for(int i=0;i<len;i++)
{
s[i]^=1;
if(cmp(s,t)==1) break;
s[i]^=1;
}
}
}