zoukankan      html  css  js  c++  java
  • 【剑指Offer面试编程题】题目1507:不用加减乘除做加法--九度OJ

    题目描述:

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

    输入:

    输入可能包含多个测试样例。
    对于每个测试案例,输入为两个整数m和n(1<=m,n<=1000000)。

    输出:

    对应每个测试案例,输出m+n的值。

    样例输入:

    3 4
    7 9
    样例输出:

    7
    16
    【解题思路】求和而不用四则运算,我们可能需要联想到加法的机器实现,机器实现当然原理和位操作类似,所以,我们可以通过位操作来实现加法。

           假设给出的num1和num2,首先我们将num1^num2得到那些0 1位应该相加,没有进位。然后,我们用num1&&num2得到所有进位组成的数,因为这个进位组成的数应该是左移一位然后加入到之前得到的那个没有进位的数中。若,还有进位,证明位操作还有冲突,需要继续左移并加入到之前的结果中。直到所有的进位处理完毕为止。

    AC code:

    #include <cstdio>
    using namespace std;
     
    int main()
    {
      int n,m;
      while (scanf("%d%d",&n,&m)!=EOF)
      {
        int num1,num2;
        do
        {
          num1=n^m;
          num2=(n&m)<<1;
          n=num1;
          m=num2;
        }while(num2!=0);
        printf("%d
    ",num1);
      }
      return 0;
    }
    /**************************************************************
        Problem: 1507
        User: huo_yao
        Language: C++
        Result: Accepted
        Time:10 ms
        Memory:1020 kb
    ****************************************************************/

    题目链接:http://ac.jobdu.com/problem.php?pid=1507

    九度-剑指Offer习题全套答案下载:http://download.csdn.net/detail/huoyaotl123/8276299



  • 相关阅读:
    软件层次结构
    PHP 配合Cross-Origin Resource Sharing实现跨域 使用心得
    C语言 标准I/O库函数 fgets 使用心得
    PHP 逗号运算符 的作用
    PHP 函数 array_map 使用心得
    PHP 函数 htmlspecialchars 使用心得
    Go语言特性学习
    curl文件上传类
    php 协程理解
    php 分词扩展 scws
  • 原文地址:https://www.cnblogs.com/huoyao/p/4248872.html
Copyright © 2011-2022 走看看