PHP两个n位的二进制整数相加问题的解决
两个n位的二进制整数相加问题PHP实现,供大家参考,具体内容如下
两个n位二进制数分别存储在两个n元数组A和B中,这两个整数的和存在一个n+1元的数组C中
答:
此问题主要是考察相加进位的问题,元素1+1 =0 并且往前进一位
ADD-BINARY(A,B)
C=new integer[A.length+1]
carry=0
for i=A.length downto 1
C[i+1]=(A[i]+B[i]+carry)%2
carry=(A[i]+B[i]+carry)/2
C[i]=carry
代码
<?php function addBinary($A,$B){ $C=array(); $length=count($A); $carry=0; for($i=$length-1;$i>=0;$i--){ //当前位的数字逻辑 1+1=0 1+0=1 $C[$i+1]=($A[$i]+$B[$i]+$carry)%2; //进位的数字逻辑 1+1=1 1+0=0 $carry=intval(($A[$i]+$B[$i]+$carry)/2); } $C[$i+1]=$carry; return $C; } $A=array(0,1,1,0); $B=array(1,1,1,1); $C=addBinary($A,$B); var_dump($C);
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。
相关推荐
-
PHP数组相加操作及与array_merge的区别浅析
发现问题 今天看到一段代码,是这么写的,感觉不熟悉,下面粘贴出来看看: <?php $array_one = [ 内容 ]; $array_two = [ 内容 ]; //关键的在这里 $array_result = $array_one + $array_two; echo "<pre/>"; print_r($array_result); ?> 我感觉奇怪的地方,就是数组$array_one与数组$array_two直接进行相加操作,我之前进行数组合并操作都
-
php二维数组用键名分组相加实例函数
本文介绍一篇关于php 二维数组以某一键名进行分组相加的实例程序,如果是从数据库里取数据的时候大可以SELECT SUM(t_value),t_id FROM t_table GROUP BY t_id,但是如果是在php程序中处理类似的问题就稍微麻烦点了,这里给个函数就是处理类似的问题 复制代码 代码如下: <?php /* 函数功能:对二维数组以某一键名进行分组相加,返回新的二维数组 * 参数说明:$arr-源数组:$new_arr-相加后得到的新数组:$target_key-要分组的键名
-
php通过排列组合实现1到9数字相加都等于20的方法
本文实例讲述了php通过排列组合实现1到9数字相加都等于20的方法.分享给大家供大家参考.具体实现方法如下: <?php set_time_limit(0); /* 函数说明:huoqu_zhuhe($eq,$jiashu,$isone=0) 参数说明:$eq---几个数相加的总和: $jiashu-------加数数组:$jiashu=array(1,2,3,4,5,6,7,8,9),可以使用的加数: $isone---是否要每次使用不同的加数,唯一性,1是 0 不,默认1 返回类型:数组,数
-
php中对2个数组相加的函数
复制代码 代码如下: <?php function array_add($a,$b){ //根据键名获取两个数组的交集 $arr=array_intersect_key($a, $b); //遍历第二个数组,如果键名不存在与第一个数组,将数组元素增加到第一个数组 foreach($b as $key=>$value){ if(!array_key_exists($key, $a)){ $a[$key]=$value; } } //计算键名相同的数组元素的和,并且替换原数组中相同键名所对应的元素
-
php实现两个数组相加的方法
本文实例讲述了php实现两个数组相加的方法.分享给大家供大家参考.具体如下: 实例1: <?php $arr1 = array("a"=>"朝阳区","b"=>"海淀区"); $arr2 = array("h"=>"西城区","a"=>"东城区","b"=>"丰台区");
-
php数组相加 array(“a”)+array(“b”)结果还是array(“a”)
在网上看到一道题: array("a")+array("b")的结果是___ A.array("a","b")B.array("b","a")C.array("b")D.array("a") 答案:D php两个数组相加,为什么结果还是不变呢? 因为,它们等效于array("0″=>"a")+array(&quo
-
PHP中array_merge和array相加的区别分析
首先来看看键名是string,两者区别: 复制代码 代码如下: <?php$arr1 = array('a'=>'PHP');$arr2 = array('a'=>'JAVA');//如果键名为字符,且键名相同,array_merge()后面数组元素值会覆盖前面数组元素值print_r(array_merge($arr1,$arr2)); //Array ( [a] => JAVA )//如果键名为字符,且键名相同,数组相加会将最先出现的值作为结果print_r($arr1+$ar
-
PHP两个n位的二进制整数相加问题的解决
两个n位的二进制整数相加问题PHP实现,供大家参考,具体内容如下 两个n位二进制数分别存储在两个n元数组A和B中,这两个整数的和存在一个n+1元的数组C中 答: 此问题主要是考察相加进位的问题,元素1+1 =0 并且往前进一位 ADD-BINARY(A,B) C=new integer[A.length+1] carry=0 for i=A.length downto 1 C[i+1]=(A[i]+B[i]+carry)%2 carry=(A[i]+B[i]+carry)/2 C[i]=carr
-
java中两个字符串的拼接、整数相加和浮点数相加实现代码
编写一个Java应用程序,从键盘读取用户输入两个字符串,并重载3个函数分别实现这两个字符串的拼接.整数相加和浮点数相加,并输出结果.要进行异常处理,对输入的不符合要求的字符串提示给用户 package zyy.wxt.demo; import java.util.Scanner; public class overload { public static void main(String[] args) { String s1 = null, s2 = null; Scanner sc = ne
-
JS取数字小数点后两位或n位的简单方法
在js中有时要用到取float数字的小数点后两位的情况. var num=10/3; function f(num,n){ return parseInt(num*Math.pow(10,n)+0.5,10)/Math.pow(10,n); } alert(f(num,2)); 以上就是小编为大家带来的JS取数字小数点后两位或n位的简单方法全部内容了,希望大家多多支持我们~
-
java中超过long范围的超大整数相加算法详解(面试高频)
java里有数字long来表示大的整数,如果两个数字的范围超过了long,要做加法算法怎么做呢? 这个问题在面试中经常碰到,如果之前没有经历的,可能一时有点想不起来怎么做. 下面我们来分析一下,两个数字超过了long的范围,那显然不能用java中的基本数字类型来计算了. 我们可以想小时候刚学习加法的竖式运算,个位对个位,十位对十位,百位对百位...以此类推.当个位满十向十位进1,十位满十向百位进1...以此类推,就这样完成了运算. 表示出来如下: 1 4 5 + 2 6 9 --------
-
android整数二分模板彻底解决边界问题
目录 1.区间 2.例题 01:查找最接近的元素 1.区间 //区间分为[l,mid]和[mid+1,r],如下,x<=a[mid]的判断条件,使得x要么在[l,mid],要么[mid+1,r] //最终l会等于r while(l<r) { int mid=l+r>>1; if(a[mid]>=x)r=mid; else l=mid+1; } //区间分为[l,mid-1]和[mid,r],如下,x>=a[mid]的判断条件,使得x要么在[l,mid-1],要么[mid
-
PHP之浮点数计算比较以及取整数不准确的解决办法
php有意思的现象,应该是很多编程语言都会有这样的现象.这个是因为计算机的本身对浮点数识别的问题.....下面通过代码给大家展示下: $f = 0.58; var_dump(intval($f * 100 *100)); //结果5799 var_dump((float)($f * 100 *100)); //结果5800 echo (int)((0.1+0.7)*10); //结果7 echo (float)((0.1+0.7)*10); //结果8 <?php $a = 0.1; $b =
-
ThinkPHP入库出现两次反斜线转义及数据库类转义的解决方法
本文实例讲述了ThinkPHP入库出现两次反斜线转义及数据库类转义的解决方法.分享给大家供大家参考.具体方法如下: 这种情况是在 magic_quotes_gpc 开启的情况下发生的.原因是thinkphp在入库的时候没有判断 magic_quotes_gpc 是否开启,不管三七二十一地进行了转义处理. 解决办法是在入口文件增加如下代码则可: 复制代码 代码如下: if (!get_magic_quotes_gpc()) { function addslashes_deep($valu
-
python两个_多个字典合并相加的实例代码
这只是符合比较正常的需求和场景. #一.适用合并两个字典(key不能相同否则会被覆盖),简单,好用. A = {'a': 11, 'b': 22} B = {'c': 48, 'd': 13} #update() 把字典B的键/值对更新到A里 A.update(B) print(A) #二.适用多种场合,多字典存在相同key需要合并相加的场景比较适用. def sum_dict(a,b): temp = dict() # python3,dict_keys类似set: | 并集 for key
-
浅析ES6的八进制与二进制整数字面量
前言 在几年前,当SpiderMonkey实现了严格模式的时候.我了解到,严格模式禁用了八进制整数字面量的写法.因为有证据表明,一些新手会利用前导0来对齐多行中的数字,从而导致意想不到的结果: var sum = 015 + // 相当于十进制的13,而不是15 197 + 001; // 反正是1 console.log(sum) // 相加得到的和是211,而不是新手认为的213 但是仍有一些开发者们需要八进制整数(尤其是那些Mozilla扩展开发者和node.js开发者),最常见的就是用在
-
怎样给PHP源代码加密?PHP二进制加密与解密的解决办法
分享2种PHP的源码加密方式,此加密方法支持任意PHP版. 注意,加密后的PHP代码无需第三方工具解密,像往常一样,直接运行即可. 复制代码 代码如下: <?php function encode_file_contents($filename) { $type=strtolower(substr(strrchr($filename,'.'),1)); if ('php' == $type && is_file($filename) &&
随机推荐
- c#几种数据库的大数据批量插入(SqlServer、Oracle、SQLite和MySql)
- js面向对象实现canvas制作彩虹球喷枪效果
- javascript 原型模式实现OOP的再研究
- 利用VBS脚本轻松盗U盘数据
- Linux下定时切割Tomcat日志并删除指定天数前的日志记录
- 解决Oracle批量修改问题
- JS防止网页被嵌入iframe框架的方法分析
- js采用map取到id集合组并且实现点击一行选中一行
- 微信小程序购物商城系统开发系列-目录结构介绍
- javascript对象的创建和访问
- 详解JavaScript中|单竖杠运算符的使用方法
- 快速增加MYSQL数据库连接数负载能力的方法分享
- 表单提交前触发函数返回true表单才会提交
- 从零学python系列之数据处理编程实例(二)
- Android 仿微信朋友圈点赞和评论弹出框功能
- Android Shader应用开发之雷达扫描效果
- Java中比较运算符compareTo()、equals()与==的区别及应用总结
- 详解mysql5.7密码忘记解决方法
- PHP实现文字写入图片功能
- vue基于viewer实现的图片查看器功能