网站建设明薇通网络售后好,欢迎访问中国建设银行,自媒体平台哪个好,备案网站1.题目描述每当贝茜将数字转换为一个新的进制并写下结果时#xff0c;她总是将其中的某一位数字写错。例如#xff0c;如果她将数字 14 转换为二进制数#xff0c;那么正确的结果应为 1110#xff0c;但她可能会写下 0110 或 1111。贝茜不会额外添加或删除数字#xff0c;…1.题目描述每当贝茜将数字转换为一个新的进制并写下结果时她总是将其中的某一位数字写错。例如如果她将数字 14 转换为二进制数那么正确的结果应为 1110但她可能会写下 0110 或 1111。贝茜不会额外添加或删除数字但是可能会由于写错数字的原因写下包含前导 0 的数字。给定贝茜将数字 N 转换为二进制数字以及三进制数字的结果请确定 N 的正确初始值十进制表示。输入格式第一行包含 N 的二进制表示其中一位是错误的。第二行包含 N 的三进制表示其中一位是错误的。输出格式输出正确的 N 的值。数据范围N 一定不超过 109且存在唯一解。输入样例1010212输出样例142.思路分析有一个十分简单的思路把二进制数所有可能的数都计算出来存下来。再把三进制所以可能的数计算出来存下来。两者的交集所共同拥有的数字一定是正确答案。首先需要枚举改变二进制每一位对应的数直接异或取反即可然后将异或后的结果根据秦九韶算法转换成10进制数并保存到哈希数组中最后改变三进制每一位对应的数转成10进制后判断其是否在哈希数组中存在3.秦九韶算法秦九绍算法是非常高效的转换为十进制数的算法因为他可以计算多项式我们便把他用于了其它进制向十进制的转换中4.Ac代码import java.io.*;
import java.util.HashSet;public class Main {public static void main(String[] args) throws IOException {BufferedReader brnew BufferedReader(new InputStreamReader(System.in));String s1br.readLine();String s2br.readLine();//转换成字符数组字符串无法异或char []c1s1.toCharArray();char []c2s2.toCharArray();HashSetInteger hsnew HashSet();for (int i 0; i c1.length; i) {//将每位数字异或取相反数字c1[i]^1;//转换为10进制数后添加到哈希表中hs.add( change(c1,2));//然后转换回来方便下一位转换c1[i]^1;}for (int i 0; i c2.length; i) {char tc2[i];for(char j0;j3;j){//如果c本位等于当前的值则跳过继续因为必定会错一位if(c2[i]j) continue;//如果不是则赋j值c2[i]j;if(hs.contains(change(c2,3))){System.out.println(change(c2,3));return;}c2[i]t;}}}//根据秦九韶算法将其他进制转换为10进制数private static Integer change(char c[], int t) {int re0;for (int i 0; i c.length; i) {rere*tc[i]-0;}return re;}}
感谢你能看完 如有错误欢迎评论指正有好的思路可以交流一波如果对你有帮助的话点个赞支持下