发散思维题——不用加减乘除做加法(剑指offer)
来源:互联网 发布:软件开发速成班 编辑:程序博客网 时间:2024/06/03 12:07
不用加减乘除做加法
- 参与人数:1096时间限制:1秒空间限制:32768K
- 通过比例:37.37%
- 最佳记录:0 ms|0K()
题目描述
写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。
链接:http://www.nowcoder.com/practice/59ac416b4b944300b617d4f7f111b215?rp=3&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking
思路:我首先想到的是二进制位运算,是的。还记得之前swap的实现吗?
a=a^b;
b=a^b;
a=a^b;
就可以不借助第三个变量把a,b交换!
其实这和
a=a+b;
b=a-b;
a=a-b;
有一定的联系呢。哈哈!
如果我把c=a^b;
d=(a&b)<<1;//这是进位;那么c^d就是得到的和,前提是c&d==0即没有再进位了。那么来个循环吧。
自己在草稿纸上模拟下进位的过程,就ok了!
#include<stdio.h>class Solution {public: int Add(int num1, int num2) { int tmp1=num1^num2; int tmp2=num1&num2; tmp2<<=1; while(tmp2) { int tmp3=tmp1^tmp2; tmp2=tmp1&tmp2; tmp2<<=1; tmp1=tmp3; } return tmp1; }};int main(){ Solution so; int n,m; while(scanf("%d%d",&n,&m)!=EOF) { printf("%d\n",so.Add(n,m)); } return 0;}
0 0
- 发散思维题——不用加减乘除做加法(剑指offer)
- 【剑指offer】6.5发散思维能力——面试题47:不用加减乘除做加法
- 《剑指offer》刷题笔记(发散思维能力):不用加减乘除做加法
- 剑指offer—不用加减乘除做加法
- 剑指offer — 不用加减乘除做加法
- 剑指offer——不用加减乘除做加法(位运算,优先级,好题)
- 剑指offer——不用加减乘除做加法
- 《剑指offer》——不用加减乘除做加法
- 剑指offer——不用加减乘除做加法
- 剑指offer——不用加减乘除做加法
- 剑指Offer—48—不用加减乘除做加法
- 剑指offer——49.不用加减乘除做加法
- 剑指offer 面试题47—不用加减乘除做加法
- 【剑指offer】不用加减乘除做加法
- 【剑指offer】不用加减乘除做加法
- 剑指Offer之 - 不用加减乘除做加法
- 剑指offer: 不用加减乘除做加法
- 剑指offer 不用加减乘除做加法
- 贪心+dp zoj3905 Cake
- [Leetcode]Subsets
- 文章标题
- Hive表导出到mysql表异常
- jquery validate 修改错误信息的显示位置
- 发散思维题——不用加减乘除做加法(剑指offer)
- HTML5 LocalStorage 本地存储
- apk信息实体类
- solr4.7的入门与相关配置
- 工薪青年投资理财必须明白的基本道理
- 判断浏览器的代码的原生js和jquery
- C++连续读入数据
- Python中range和xrange函数的异同
- eclipse常用快捷键