首页 > 试题广场 >

不用加减乘除做加法

[编程题]不用加减乘除做加法
  • 热度指数:291033 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 64M,其他语言128M
  • 算法知识视频讲解
写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。

数据范围:两个数都满足
进阶:空间复杂度 ,时间复杂度
示例1

输入

1,2

输出

3
示例2

输入

0,0

输出

0
头像 牛客题解官
发表于 2020-06-01 16:35:45
精华题解 题目的主要信息: 题目给出两个数字 我们需要给出两个数字相加的结果 题目要求我们不可以用加减乘除符号 因此与或非运算就是我们可以用的方式 举一反三: 学习完本题的思路你可以解决如下题目: JZ15. 二进制中1的个数 JZ56. 数组中只出现一次的两个数字 JZ64. 求1+2+3+...+n 展开全文
头像 漫漫云天自翱翔
发表于 2021-06-19 22:12:21
精华题解 题解一:自增主体思路:循环其中一个值,每次自减1,让另外一个值自增复杂度分析:时间复杂度:O(n),循环了n次;空间复杂度:O(1)。实现如下: class Solution { public: int Add(int num1, int num2) { //通过循环来保证两 展开全文
头像 蒙牛麦片
发表于 2021-06-24 09:35:29
精华题解 JZ48 不用加减乘除做加法 题意分析 自己实现一个没有使用加减乘除的加法。 示例输入:1,2返回:1+2=3 题解一:(投机取巧): 不建议使用,没有学习到只是点。 int Add(int num1, int num2) { vector<int> v = {num1, num 展开全文
头像 鸠摩罗什
发表于 2021-07-01 23:56:12
精华题解 描述        写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。示例1输入:1,2返回值:3 方法一:C++自带累加函数核心思想:    &nb 展开全文
头像 JKingKong
发表于 2020-01-21 14:13:26
不用加减乘除做加法 题目描述 写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号 1、位运算 1.解题思路 使用位运算实现加法 1、一位加法 普通加法 异或 1 + 1 = 0 1 ^ 1 = 0(错误) 1 + 0 = 1 1 ^ 0 = 1(正确) 展开全文
头像 法拉利201903231900848
发表于 2019-08-05 18:05:10
class Solution { public:     int Add(int num1, int num2)     {     展开全文
头像 中工升达预备毕业生
发表于 2019-12-15 11:22:27
【正如offer书上所说】在计组中,半加器、全加器中:两个二进制的相加结果是用一个异或门实现的;两个二进制的进位结果是用一个与门来实现的。 public class Solution { public int Add(int num1, int num2) { int res 展开全文
头像 Ironxin
发表于 2020-03-11 09:53:37
不用加减乘除做加法:写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。考点:进制转化 思路: & 按位与运算:相同位的两个数字都为1,则为1;若有一个不为1,则为0。两个数相与,并左移一位:相当于求得进位  如:1&1=1 将1左移一位变成了10,相当于 展开全文
头像 谁谁谁201903271528594
发表于 2020-05-03 20:34:31
# -*- coding:utf-8 -*- class Solution:     def Add(self, num1, num2):         # write code here       &nb 展开全文
头像 郭家兴0624
发表于 2019-08-12 09:34:21
题目描述写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。 思路(转自 牛客网箫筱沐羽):第一步:相加各位的值,不算进位,二进制每位相加就相当于各位做异或操作;第二步:计算进位值,相当于各位做与操作,再向左移一位。第三步重复上述两步, 各位相加 ,计算进位值。进位值为0, 展开全文
头像 数据结构和算法
发表于 2021-04-06 21:50:14
一:非递归解法 我们先来看一道非常简单的题,在计算机中数字是由二进制位表示的,也就是说是由0和1组成的,如果我们要实现0和1之间的加法该怎么实现呢,他会有4种组合方式 1,0+0=00 2,0+1=01 3,1+0=01 4,1+1=10 我们发现一个很重要的规律,就是只有1+1有进位,其他的都没进 展开全文
头像 夜渡寒鸦呀
发表于 2022-06-08 15:18:16
C语言求 不用加减乘除做加法 解题思路 对于两个数a b,直接使用异或运算,得到不进位的数据,比如二进制 0101 与二进制 1011 ,直接异或运算,相当于按照位进行加法。 此时在计算一个发生进位的值,使用与运算,两个1会发生进位,得到进位结果需要左移一次,因为进位向前进一。 因此 a+b 等价于 展开全文
头像 一风吹
发表于 2022-01-23 15:31:23
巧用位运算: 1、num1 & num2,与运算,得到的是2个数都是1的位置,如果进行加法,则需要进位,m =(num1 & num2)<< 1,得到进位后的数。 2、num1 ^ num2,异或,得到的是2个数1个为0另一个为1的位置,如果进行加法,则不需要进位。n = 展开全文
头像 常喝水
发表于 2019-12-28 21:11:56
其实就是用位运算做https://blog.csdn.net/lrs1353281004/article/details/87192205 class Solution: def Add(self, num1, num2): # write code here 展开全文

问题信息

难度:
709条回答 115019浏览

热门推荐

通过挑战的用户

查看代码