传送门

题意:给出九连环的两种状态,问第一种状态转化到第二种状态时至少需要多少步?

题解:这道题是与格雷码有关的题目,定义以及转化规则看这儿传送门

还有个好的视频解说传送门

由于九连环仅限的两种操作(假设大家都玩过),所以用二进制表示下的相邻状态只有一个1的差别,所以此时的状态就是所谓的格雷码,而转化好的二进制就是所谓的这种状态到环全部下下的状态的步数,所以这道题也就是将这两个的格雷码转化好的二进制算出来,差值的绝对值即为答案,由于数据范围128,直接用JAVA的大数包进行解决。

附上代码:

import java.util.*;
import java.math.BigInteger;public class Main{public static void main(String []args) {Scanner cin=new Scanner(System.in);int m=cin.nextInt();while(m-->0) {int n=cin.nextInt();BigInteger a=new BigInteger("0"),b=new BigInteger("0");for(int i=0;i<n;i++) {if(cin.nextInt()==0) {a=a.multiply(BigInteger.valueOf(2)).add(a.mod(BigInteger.valueOf(2)));}else {a=a.multiply(BigInteger.valueOf(2)).add(BigInteger.valueOf(1)).subtract(a.mod(BigInteger.valueOf(2)));}}for(int i=0;i<n;i++) {if(cin.nextInt()==0) {b=b.multiply(BigInteger.valueOf(2)).add(b.mod(BigInteger.valueOf(2)));}else {b=b.multiply(BigInteger.valueOf(2)).add(BigInteger.valueOf(1)).subtract(b.mod(BigInteger.valueOf(2)));}}System.out.println(a.subtract(b).abs());}}
}

连环锁 POJ - 1832(格雷码与二进制)相关推荐

  1. (132)FPGA面试题-Verilog实现格雷码转二进制

    1.1 FPGA面试题-Verilog实现格雷码转二进制 1.1.1 本节目录 1)本节目录: 2)本节引言: 3)FPGA简介: 4)FPGA面试题-Verilog实现格雷码转二进制: 5)结束语. ...

  2. 格雷码转换成二进制c语言程序,格雷码与二进制的转换程序

    /* 格雷码与二进制的转换程序 * 本程序采用递推的方法进行推导,可以转换0~2147483647之间的数(1~31位) * 推导方式如下(以三位格雷码为例): * 序号 格雷码 格雷码实值 二进制码 ...

  3. 汇编实验:格雷码转二进制(ASCII码)的实现和调试

    实验说明 格雷码和二进制的转换 思路 为完成实验内容,可通过查表和格雷码计算两种方式完成,此处使用格雷码直接计算得出结果. SHL算术左移命令可将二进制数的高位存入CF,直接得出高位数据,通过异或操作 ...

  4. chisel格雷码二进制转换

    一.格雷码简介 格雷码是一个叫弗兰克*格雷的人在 1953 年发明的,最初用于通信.格雷码是一种循环二进制码或者叫作反射二进制码.格雷码的特点是从一个数变为相邻的一个数时,只有一个数据位发生跳变,由于 ...

  5. 二进制和格雷码转换方法及程序

    二进制和格雷码转换方法及程序 1 格雷码介绍 2 二进制转格雷码 3 格雷码转二进制 1 格雷码介绍 格雷码(Gray code)是1880年由法国工程师Jean-Maurice-Emlle Baud ...

  6. LeetCode Gray Code 格雷码

    题意:提供一个数字n,代表二进制的个数,那么就有2的n次方个可能性了,从0到2^n-1.将其转成格雷码,再直接将二进制的格雷码按二进制的读法变成整数,装在vector容器中返回,要有序(否则你直接将0 ...

  7. 格雷码、二进制码、BCD编码

    格雷码 格雷码(12页).pdf 格雷码(12页).pdf-其它文档类资源-CSDN下载 奇偶校验码(25页).pdf 奇偶校验码(25页).pdf-其它文档类资源-CSDN下载 经验:如何快速地写出 ...

  8. C++ 数学与算法系列之认识格雷码

    1. 前言 程序中所涉及到的任何数据,计算机底层均需转换成二进制数值后方可存储,这个过程也称为编码.反之,把底层二进制数据转换成应用数据称为解码, 不同的数据类型需要不同的编(解)码方案,如音频数据编 ...

  9. 数字电路基础知识——格雷码和二进制码的转换的算法和Verilog实现

    数字电路基础知识--格雷码和二进制码的转换的算法和Verilog实现 关于数字电路中的码制问题在这篇博客中已经做了详细分析, 数字电路基础知识--数字IC中的进制问题(原码,反码,补码以及各进制的转换 ...

最新文章

  1. 正则满足中文的顿号_常用的正则表达式、正则表达式之断言
  2. kaggle數據集下載到colab上并且解压
  3. Android学习_ContentProvider和Uri
  4. AJAX 网页保留浏览器前进后退等功能
  5. Windows 编程[8] - WM_PAINT 消息
  6. 长安链chainmaker 修改共识方法
  7. 《游戏系统设计六》一步一步实现王者荣耀等级系统
  8. 桌面快捷方式小箭头隐藏与还原(亲测有效)
  9. 记一次golang memory leak的解决过程
  10. MATLAB基础图像处理算法
  11. 傻妞对接TG/监控变量国内国外机视频教程 6.16
  12. 把ubuntu安装在U盘的教程之一:制作U盘启动盘
  13. 为何现在的90后员工的离职率越来越高了?
  14. 850是什么意思_850w是什么意思 孤存850w是什么梗
  15. cad墙线打断lisp_CAD绘制墙体时,不打断模式有什么好处?
  16. MySQLWorkBench怎么设置主键自增长
  17. 前端上传文件或者上传文件夹
  18. 电脑免费录屏软件哪个好用?分享3款,亲测好用
  19. nbsp是jsp里的空格
  20. 手机QQ登录测试用例

热门文章

  1. Unity3d资源反编译. AssetBundle格式简析+简单应用+爬坑
  2. caffe的使用方法
  3. matlab毕业答辩会问什么,论文答辩必备:自述模板和注意问题
  4. key组合按键,长短按键,连续按键 识别方案
  5. 2021-05-12 MongoDB面试题 什么情况下需要用到MongoDB的分片
  6. 知识付费项目怎么做?新手小白怎么入手!
  7. 简单的图片数字时钟js代码
  8. 头哥 (Educoder)数据结构与算法实验:实验11 TYJ动态规划
  9. [NOIP2010 普及组] 三国游戏 题解
  10. dad my_My dad英语绘本.ppt