题目描述:
奶牛贝茜正在学习如何在不同进制之间转换数字。
但是她总是犯错误,因为她无法轻易的用两个前蹄握住笔。
每当贝茜将数字转换为一个新的进制并写下结果时,她总是将其中的某一位数字写错。
例如,如果她将数字 $14$ 转换为二进制数,那么正确的结果应为$ 11101110$,但她可能会写下 $01100110 或 11111111$。
贝茜不会额外添加或删除数字,但是可能会由于写错数字的原因,写下包含前导 00 的数字。
给定贝茜将数字 $N$ 转换为二进制数字以及三进制数字的结果,请确定 $N$ 的正确初始值(十进制表示)。
思路
进行枚举,枚举每位出错,然后对比出错后两者是否相等。
代码
import java.util.Arrays;
import java.util.HashMap;
import java.util.Scanner;
import java.lang.Math;
public class Main{
public static int work(String a, String b)
{
int la = a.length();
int lb = b.length();
char[] sa = a.toCharArray();
char[] sb = b.toCharArray();
for(int i = 0; i < la; i ++)
{
char qa = sa[i];
if(sa[i] == '0')
sa[i] = '1';
else
sa[i] = '0';
String a1 = new String(sa);
int na = Integer.parseInt(a1, 2);
for(int j = 0; j < lb; j ++)
{
char qb = sb[j];
for(char k = '0'; k <= '2'; k ++)
{
if(k != qb)
{
sb[j] = k;
String b1 = new String(sb);
int nb = Integer.parseInt(b1, 3);
if(na == nb)
return na;
}
}
sb[j] = qb;
}
sa[i] = qa;
}
return 0;
}
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String s,s1;
s = in.next();
s1 = in.next();
int ans = work(s, s1);
System.out.printf("%d\n", ans);
}
}