由1变成2,按红蓝按钮皆可,所以特殊处理1

数字转换机

http://www.nowcoder.com/questionTerminal/e870b63e149341c8b6441bc9ebf963d6

由1变成2,按红蓝按钮皆可,所以特殊处理1;
从A变成a,从B变成b,只要是偶数就是蓝色按钮的逆操作。(底数为2的对数复杂度,步数最少)

import java.util.*;
public class Main {
    public static void main(String[] args) throws Exception{
        Scanner sc = new Scanner(System.in);
        int a = sc.nextInt(), b = sc.nextInt();
        int A = sc.nextInt(), B = sc.nextInt();
        StringBuilder button1 = new StringBuilder("");    //A变成a的按钮序列
        while(A > 0 && A != a){
            if(A%2 == 0){
                button1.append('B');
                A /= 2;
            }else{
                button1.append('R');
                A--;
            }
        }
        StringBuilder button2 = new StringBuilder("");    //B变成b的按钮序列
        while(B > 0 && B != b){
            if(B%2 == 0){
                button2.append('B');
                B /= 2;
            }else{
                button2.append('R');
                B--;
            }
        }
        if(button1.toString().equals(button2.toString())){
            System.out.println(button1.length());
        }else{
            int n = button1.length();
            int m = button2.length();
            if((a == 1 || b == 1)&&button1.toString().substring(0, n - 1).equals(button2.toString().substring(0, m - 1))){
                System.out.println(button1.length());
            }
            else System.out.println(-1);
        }
    }
}
全部评论
错的,比如 2 3 3 4,一步就可以,A和B是可以奇偶不同的
点赞 回复 分享
发布于 2023-11-03 23:47 广东
好像也过不了了。。。
点赞 回复 分享
发布于 2023-01-05 16:39 香港

相关推荐

那一天的Java_J...:他本来公司就是做这个的,不就是正常的游戏客户端和服务器开发,软硬件联动,有啥恶心不恶心的,提前告诉你就是怕你接受不了,接受不了就没必要再往后走流程浪费时间,虽然这公司是一坨。
点赞 评论 收藏
分享
喜欢飞来飞去的雪碧在...:可以试一试字节
点赞 评论 收藏
分享
ohs的小木屋:比不少实习待遇高了
点赞 评论 收藏
分享
评论
2
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务