问题描述:
异或运算是常见的二进制运算,给出两个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目录下建立文件也可)。