#1 A + B Problem

原创 2016年08月30日 13:24:43

题目描述:

Write a function that add two numbers A and B. You should not use + or any arithmetic operators. 

 Notice

There is no need to read data from standard input stream. Both parameters are given in function aplusb, you job is to calculate the sum and return it.

Clarification

Are a and b both 32-bit integers?

  • Yes.

Can I use bit operation?

  • Sure you can.
Example

Given a=1 and b=2 return 3


题目思路:

这题如果会bit manipulate会很简单,不会就很心酸。我参考了九章上的答案提示,如下:

// 主要利用异或运算来完成 
        // 异或运算有一个别名叫做:不进位加法
        // 那么a ^ b就是a和b相加之后,该进位的地方不进位的结果
        // 然后下面考虑哪些地方要进位,自然是a和b里都是1的地方
        // a & b就是a和b里都是1的那些位置,a & b << 1 就是进位
        // 之后的结果。所以:a + b = (a ^ b) + (a & b << 1)
        // 令a' = a ^ b, b' = (a & b) << 1
        // 可以知道,这个过程是在模拟加法的运算过程,进位不可能
        // 一直持续,所以b最终会变为0。因此重复做上述操作就可以
        // 求得a + b的值。
Mycode (AC = 10ms):

class Solution {
public:
    /*
     * @param a: The first integer
     * @param b: The second integer
     * @return: The sum of a and b
     */
    int aplusb(int a, int b) {
        // write your code here, try to do it without arithmetic operators.
        int sum = a, carry = b;
        while (carry != 0) {
            int _sum = sum ^ carry;
            int _carry = (sum & carry) << 1;
            sum = _sum;
            carry = _carry;
        }
        return sum;
    }
};


版权声明:三千微尘里,吾宁爱与憎

HDU_2055 An easy problem

An easy problem Problem Description we define f(A) = 1, f(a) = -1, f(B) = 2, f(b) = -2, ... f(Z) =...
  • yuniZZ
  • yuniZZ
  • 2014年07月29日 20:07
  • 221

杭电1002 a+b problem2

A + B Problem II Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)...
  • xd15010130025
  • xd15010130025
  • 2016年02月27日 21:52
  • 823

A/B Problem

A/B Problem 时间限制:1000 ms  |  内存限制:65535 KB 难度:3 描述  做了A+B Problem,A/B Problem不是什么问题了...
  • zuguodexiaoguoabc
  • zuguodexiaoguoabc
  • 2015年02月01日 12:57
  • 442

NYOJ---A+B Problem II

这个题的思路就是大数加法,把大数当成一个字符串来就行运算。不过这个代码的亮点就是他不需要顾及两个数的长短问题。所以把它贴出来········· 原题地址:点击打开链接 代码如下: #in...
  • OosuifengoO
  • OosuifengoO
  • 2011年12月20日 20:22
  • 2485

杭电ACM 1002:A+B Problem II

刷题第三篇,这一题看似也比较简单,但是一做就错,花费了很大力气才把他搞定。切记一定要亲自用笔画图算出,这样收获才会更大。原题回顾Problem Description I have a very ...
  • Always2015
  • Always2015
  • 2015年04月07日 22:27
  • 3351

A+B Problem c++

题目描述 输入两个整数a,b,输出它们的和(|a|,|b|
  • SSL_Yyx
  • SSL_Yyx
  • 2017年05月11日 15:33
  • 274

高精度 A*B Problem

题目:请戳此处 #include #include #include char s[30000],l[30000]; long long a[30001],b[30001],c[60000],al,...
  • YALI_xunzhen
  • YALI_xunzhen
  • 2016年02月04日 15:07
  • 258

NYOJ A+B Problem II(大数A+B)

A+B Problem II 时间限制:3000 ms  |  内存限制:65535 KB 难度:3 描述 I have a very simple problem f...
  • zwj1452267376
  • zwj1452267376
  • 2015年01月10日 16:59
  • 605

ZOJ 1001 A + B Problem(Java解法)

import java.util.Scanner; public class Main{     public static void main(String[] args) {      ...
  • CZJCC
  • CZJCC
  • 2014年03月03日 11:03
  • 2022

BZOJ3218 UOJ#77 A+B Problem(最小割+主席树)

竟然在BZOJ上拿了Rank1太给力啦。 传送门(BZOJ) 传送门(UOJ) 说说这道题目吧: 首先是说说这个构图吧。因为有选择关系,我们很容易想到最小割。 Ans = sigma(i为白色){w[...
  • geng4512
  • geng4512
  • 2016年02月24日 00:34
  • 1417
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:#1 A + B Problem
举报原因:
原因补充:

(最多只允许输入30个字)