不用加号计算A+B,我们用异或运算和与运算以及位运算来实现同等的操作,A^B的二进制异或运算,相当于没有进位的加号运算;例如 A=10,B=11;A^B = 10,而A+B的值为110,所以相比来说少了一个进位,我们要做的就是 用与运算和移位运算来实现,A&B = 10,A&B>>1 = 100; (A^B)^(A&B>>1) =110,(A^B)&(A&B>>1)=0;
所以我们 进行递归操作,进了几次位就 进行多少次递归,直至B这一项变为0,范围A即可;代码如下:
package lintcode; import java.util.Scanner; /** * Created by Taoyongpan on 2017/11/15. * 求A+B的和,不能运用加号,A,B都是int型 */ public class SumAB { public static int sum(int a,int b){ if (a==0){ return b; } if (b==0){ return a; } return sum(a^b,(a&b)<<1); } public static void main(String[] args){ Scanner sc = new Scanner(System.in); while (sc.hasNext()){ int a = sc.nextInt(); int b = sc.nextInt(); System.out.println(sum(a,b)); } } }
相关推荐
自己写的 大家觉得实在没思路就看看我的吧 不过别骂人
Python题目a+b,
c语言作业题目A+B问题
大部分的在线题库,都会将A+B问题作为第一题,以帮助新手熟悉平台的使用方法。 A+B问题的题目描述如下:给定两个整数A和B,输出A+B的值。保证A、B及结果均在整型范围内。现在请你解决这一问题。
每组测试数据占1行,包括2个正整数A 和B,(0<=A,B^500),请注意A、B的范围很大。 输出要求 根据输入的A、B,输出A、B的和,如果结果很长时,每行输出50个数字,然后换行接着输出。为了区分在每个测试例子前输出...
c++a+b问题源代码
HUSTOJ A+B问题(含12种语言的样例)
hustoj A+B问题16种语言及答案
入门1、A+B问题.sln
初学python之(A+B问题)
问题描述 输入A、B,输出A+B。 输入格式 输入的第一行包括两个整数,由空格分隔,分别表示A、B。 输出格式 输出一行,包括一个整数,表示A+B的值。
acm程序设计中的较为复杂的a+b问题的最优解答方法,希望采纳。
蓝桥杯VIP题和题解
云计算程序 java版本 a+b
输入A和B,求出A+B的值
这是一个非常简单的题目,意在考察你编程的基础能力。千万别想难了哦。输入为一行,包括了用空格分隔的三个整数 AAA、BBB、CCC...输出为一行,为“A+B+CA+B+CA+B+C”的计算结果。 样例输入 22 1 3 样例输出 26
Input contains multiple ... Each test case contains a integer N, and then N integers follow in the same line. A test case starting with 0 terminates the input and this test case is not to be processed.
航电评测全部题目离线版。
新世纪大学英语综合教程4第四册课文全翻译A+B.doc 本文档主要讨论了人与自然的关系、生态环境的危机和物种灭绝的问题。人类与大自然之间的相互影响是非常紧密的,我们呼吸的空气、喝下的水和摄入的食物都来自大自然...