笨拙的手指


题目描述:

奶牛贝茜正在学习如何在不同进制之间转换数字。

但是她总是犯错误,因为她无法轻易的用两个前蹄握住笔。

每当贝茜将数字转换为一个新的进制并写下结果时,她总是将其中的某一位数字写错。

例如,如果她将数字 $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);
    }

}

文章作者: 姜小白
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 姜小白 !
评论
  目录