求a+b及九余数定理
来源:互联网 发布:高瓴资本红杉资本知乎 编辑:程序博客网 时间:2024/06/05 10:46
Calculate the sum of two integers a and b, but you are not allowed to use the operator +
and -
.
Example:
Given a = 1 and b = 2, return 3.
思路: 这里用到了一个半加法的思想, 即两位单独的位相加其结果可以用异或得到, 进位可以用与得到. 然后对于两个数字来说同样可以延伸这个思想.
举个例子: 11+5, 其二进制形式为11: 1011, 5: 0101
1. 那么两个位置都为1的地方就需要进位, 所以进位值就为0001. 原位置两个数相加的结果为那个位置值的异或即1110, 即两个位置值如果不一样就为1, 一样的话要么两个位置原来值都为0结果也为0, 要么进位, 那么结果依然是0.
2. 接下来就要把进位位和下一位相加, 所以进位值左移一位,即0001变为0010, 重复上面操作可得新的进位值为0010, 原位置异或(即相加)结果为1100.
3. 继续重复上面操作直到进位为0, 可得到最终结果10000, 即16
代码如下:
class Solution {public: int getSum(int a, int b) { int sum=a; while(b!=0) { sum=sum^b; b=(a&b)<<1; a=sum; } return sum; }};
九余数定理:
数字(N)mod 9的余数等于N各个位上数字之和mod 9的余数
阅读全文
0 0
- 求a+b及九余数定理
- NYOJ-485 A*B Problem【九余数定理】
- A*B Problem 485 (数学题+九余数定理)
- 九余数定理及证明 hdu 1163
- Hdu 1163 Eddy's digital Roots + NYOJ-485 A*B Problem(九余数定理)
- nyoj485 A*B Problem(九余数问题)
- 九余数定理
- 九余数定理
- 九余数定理
- 九余数定理
- 九余数定理
- HDU1163九余数定理
- 九余数定理扩展
- HDU1163【九余数定理】【水题】
- HDU-1013九余数定理
- nyoj 485 九余数定理
- NYOJ 105 九的余数 (大数求余&同余定理)
- nyoj 424 && 485(九余数定理)
- 机器维护检查操作步骤详解
- 硕博论文知网查重检测入口
- 有道云笔记修改护眼绿背景色
- linux挂载本地镜像文件的方法
- ORACLE基础
- 求a+b及九余数定理
- RecyclerView的基本操作集成
- Direct3D效果框架
- 单目深度估计(Monocular Depth Estimation)之摄像机运动对深度估计的影响
- USB的四种传输模式
- Linux下用命令行彻底删除文件
- Untiy3d 脚本打包
- java List和数组相互转换方法
- Maven工程多模块继承和聚合项目创建与数据库测试步骤详解