zoukankan      html  css  js  c++  java
  • php实现2017年京东编程题之异或问题

    问题描述:

      异或运算是常见的二进制运算,给出两个n位二进制数a,b。a异或b的运算依次考虑二进制的每一位,若这一位相同,那么这一位的异或结果就是0,不同就是1。

    例如a=1100, b=0100。执行a异或b的运算,a的最高位是1,b的最高位是0,两个数字不同所以最高位异或结果是1;a和b次高位都是1,所以次高位异或为0;最后两位它们都是0,所以异或结果也都是0。那么a异或b的答案就是1000。

      现在输入两个n位二进制数,输出它们异或结果的十进制答案。上述样例中异或的二进制结果为1000,转化成十进制就是8。

    测试用例:

    4

    1100

    0011

    out:15

    代码:

    //打开stdin流
    $input = fopen("php://stdin","r");
    //获取二进制位数)
    $n = trim(fgets($input));
    while($n){
      //获取第一、第二个二进制数,为避免空格的输入,去掉获取的值的前后空格
      $str1 = trim(fgets($input));
      $str2 = trim(fgets($input));
      //先将结果赋空
      $strout = '';
      //进行异或运算
      for($i=0;$i<$n;$i++){
        $strout.= ((int)$str1[$i])^((int)$str2[$i]);
      }
      ltrim($strout,1);
      //将异或之后的结果转换为十进制数并输出
      echo bindec($strout)." ";
      $n = trim(fgets($input));
    }
    //关闭文件流
    fclose($input);

    调试:

    win+r,输入cmd打开dos窗口,进入包含php.exe的目录下,如图所示:(注意:jingdong.php是我自己写好的php文件,拷贝到php目录下,或者用编译器直接在php目录下建立文件也可)。

    不以物喜,不以己悲
  • 相关阅读:
    HDU 2089 不要62 (数位DP)
    数位DP总结
    怒刷DP之 HDU 1160
    将时间转为几小时前,几周前,几天前等
    link与import的区别
    什么是虚拟DOM?为啥虚拟DOM可以提升性能?
    前端面试问题2
    【转载】什么是闭包? 闭包的优缺点 闭包的应用场景
    小程序发布审核不通过
    前端面试常问 问题总结
  • 原文地址:https://www.cnblogs.com/ylcxBlog/p/6714448.html
Copyright © 2011-2022 走看看