A + B问题
Posted neu-zhn
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了A + B问题相关的知识,希望对你有一定的参考价值。
问题描述:给出两个整数a和b, 求他们的和, 但不能使用 +
等数学运算符。
1.A^B为不进位的相加结果。
2.(A&B)<<1为进位的位置。
重复上述两部直到不需要进位为止
Java代码有递归和非递归两种
递归的代码为
1 public int aplusb(int a, int b) { 2 // write your code here 3 if(b == 0){ 4 return a; 5 } 6 7 int sum = a^b; 8 int evl = (a&b)<<1; 9 return aplusb(sum, evl); 10 11 }
总耗时1468ms。
非递归代码
1 public int aplusb(int a, int b) { 2 // write your code here 3 int sum = a; 4 while(b != 0){ 5 sum = a^b; 6 b = (a&b)<<1; 7 a = sum; 8 } 9 return sum; 10 11 }
总耗时909ms。
以上是关于A + B问题的主要内容,如果未能解决你的问题,请参考以下文章
[Codeforces Round #522 (Div. 2, based on Technocup 2019 Elimination Round 3)][C. Playing Piano](代码片段