不用加减乘除做加法

时间限制:1秒 空间限制:32768K 热度指数:81997

算法知识视频讲解

题目描述

写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。

首先,十进制是如何计算加法:5+7=12

  1. 相加各位的值,不算进位,得到2
  2. 计算进位的值,得到10,如果进位为0,那么第一步得到的值即为结果
  3. 重复上述两步,相加的值变成10和2,结果为12

同样以三步走的方式计算二进制下的加法:5-101,7-111

  1. 相加各位的值,不算进位,得到010;二进制相加就是每一位做异或操作:101^111
  2. 计算进位值,得到1010;相当于每一位做与操作,再左移一位:(101&111)>>1=1010
  3. 重复上述两步,各位相加:010^1010=1000;进位值:(010&1010)>>1=100;继续重复上述两步,1000^100=1100,进位值为0,退出循环;结果为1100
import java.util.*;
public class Solution{public int Add(int num1,int num2) {while(num2!=0) {int temp=(num1^num2);num2=(num1&num2)<<1;num1=temp;}return num1;}public static void main(String[] args) {Scanner cin=new Scanner(System.in);Solution work=new Solution();while(cin.hasNext()) {int a=cin.nextInt();int b=cin.nextInt();System.out.println(work.Add(a,b));}cin.close();}}

Java大数类

import java.util.*;
import java.math.*;
public class Solution{public int Add(int num1,int num2) {BigInteger a=BigInteger.valueOf(num1);BigInteger sum=a.add(BigInteger.valueOf(num2));return sum.intValue();}public static void main(String[] args) {Scanner cin=new Scanner(System.in);Solution work=new Solution();while(cin.hasNext()) {int a=cin.nextInt();int b=cin.nextInt();System.out.println(work.Add(a,b));}cin.close();}
}

剑指Offer_编程题 不用加减乘除做加法相关推荐

  1. 【LeetCode 剑指 Offer 65】不用加减乘除做加法

    不用加减乘除做加法 https://leetcode.cn/problems/bu-yong-jia-jian-cheng-chu-zuo-jia-fa-lcof/ 题目描述 写一个函数,求两个整数之 ...

  2. 剑指 offer set 26 不用加减乘除做加法

    总结 1. Leetcode 上有一道题, 是不用乘除做乘法, 那道题算是背包问题的变形 2. 不用加减乘除, 还可以用移位操作 3. 将数字转成二进制格式, 然后运用二进制亦或, 移位运算解决 3. ...

  3. 【剑指offer】_14 不用加减乘除做加法

    题目描述 写一个函数,求两个整数之和,要求在函数体内不得使用+.-.*./四则运算符号. 解题思路 首先看十进制是如何做的: 5+7=12,三步走 第一步:相加各位的值,不算进位,得到2. 第二步:计 ...

  4. 牛客网 c++ 剑指Offer_编程题 第五题用两个栈实现队列

    前言: 牛客网 c++ 剑指Offer_编程题 第五题用两个栈实现队列 题目: **这个题目不难,但是我感觉题目出得奇怪,刚开始没理解要干啥 我一个队列就能实现他要的功能为啥要两个 队列 queue ...

  5. python加减法计算题 代码_关于《剑指offer》中不用加减乘除做加法的Python代码的问题...

    题目如下: 写一个函数,求两个整数之和,要求在函数体内不得使用+.-.*./四则运算符号. 题目不难,可以采用位操作来实现,利用异或运算来计算不带进位的加法结果,利用与运算计算进位的标志,然后将这两个 ...

  6. 【Java】剑指Offer_编程题_机器人的运动范围

    题目链接:https://www.nowcoder.com/questionTerminal/6e5207314b5241fb83f2329e89fdecc8 题目描述 地上有一个m行和n列的方格.一 ...

  7. 剑指Offer_编程题_22

    题目描述 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序.假设压入栈的所有数字均不相等.例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序 ...

  8. 剑指Offer_编程题09:变态跳台阶

    题目:一只青蛙一次可以跳上1级台阶,也可以跳上2级--它也可以跳上n级.求该青蛙跳上一个n级的台阶总共有多少种跳法. 牛客网:链接 我们使用数学归纳法不难发现,跳法f(n)=2^(n-1). # -* ...

  9. 【Java】剑指Offer_编程题_丑数

    题目链接:https://www.nowcoder.com/questionTerminal/6aa9e04fc3794f68acf8778237ba065b 题目描述 把只包含质因子2.3和5的数称 ...

最新文章

  1. python程序不出结果_超详细的Python入门教程,1小时就可以学会
  2. 为什么工作10年你的工资还不如新来的实习生
  3. 【机器学习基础】范数与正则化
  4. 【leetcode】147. Insertion Sort List
  5. 使用Mockito模拟自动装配的字段
  6. HTML5 Canvas 裁剪区域
  7. 集群搭建预备操作:在私有云上创建与配置虚拟机
  8. 模板引擎工作原理_「白皮书解读搜索引擎的工作原理」如何排序
  9. RocketMQ报错 service not available now, maybe disk full, CL: 0.95 CQ: 0.95 INDEX: 0.95, maybe
  10. 【特征提取】基于matlab语音端点检测【含Matlab源码 552期】
  11. 流畅的python学习记录——第五章:一等函数
  12. Julia学习01——Julia安装与卸载
  13. ZEMAX 2018中文版光学仿真视频教程
  14. SCI、EI论文框架
  15. vsphere学习笔记系列-vmotion
  16. 苹果笔记本python开发第一个程序_Xcode的第一个mac程序
  17. 解决 413 Request Entity Too Large
  18. ssoj4027: 挖煤(coal)
  19. python是什么软件是电脑系统自带的软件吗_用Python编写桌面软件系统的步骤是什么?...
  20. 卷积神经网络用于MRI图像中的脑部病变分割

热门文章

  1. Hello Cnblog!
  2. ASP.NET Split(字符文本中的字符太多 解决方法)
  3. 计算机听不到音乐怎么回事,Win10电脑设置麦克风提示“计算机听不到任何声音”如何解决...
  4. php上传视频文件代码,php上传视频的代码
  5. django安装_pip安装Django提示ssl不可用?如何解决?
  6. java库net2.0下载_.NET Framework各版本独立下载.NET Framework 3.5下载.NET Framework 2.0下载...
  7. 软件工程与项目管理的关系_PM:软件项目管理概要
  8. 对话系统(四)- RNN
  9. laravel框架中文手册_laravel请求参数校验方法
  10. collection集合 多少钱_Java 集合(2)-- Iterator接口源码超级详细解析