不用乘、除、取模运算,求两个整数的商。

思路一:

可以用一个循环来做。

思路二:

a/b=exp( log(a/b) )=exp( log(a) - log(b) )。

The tricky part of this question does not lie on the algorithm though. It has something to do with overflows. For particular, if we use Math.abs to compute the absolute value of Integer.MIN(-2147483648), we get -2147483648 again. So we should manually make it equal to Integer.MAX(2147483647). Most of the cases this is fine, except for one case where you try to divide Integer.MIN by 2, i.e., -2147483648 / 2 = -1073741824. However, 2147483647 / 2 = 1073741823. I have to add one more edge condition that if the divisor is 2, we just do the bitwise operation: right shift. Another node is Integer.MAX / Integer.MIN = 0 (not -1).

代码:

class Solution {
public:int divide(int dividend, int divisor) {if(divisor == 0)return 0;if(divisor == 1)return dividend;if(dividend == divisor)return 1;if(divisor == 2)return dividend >> 1;bool sign = false;if( (dividend > 0 && divisor < 0) ||(dividend < 0 && divisor > 0))sign = true;if(dividend == numeric_limits<int>::max() && divisor == numeric_limits<int>::min())return 0;dividend = dividend == numeric_limits<int>::min() ? numeric_limits<int>::max() : abs(dividend);divisor = divisor == numeric_limits<int>::min() ? numeric_limits<int>::max() : abs(divisor);int result = (int) floor(exp(log(dividend) - log(divisor)));return sign ? -result : result;}
};

不用/,*,mod乘、除、取模运算的除法相关推荐

  1. 解析java中的除法运算和取模运算

    解析java中的除法运算和取模运算 A.除法运算 a.含义及其语法 除法运算就是被除数除以除数的这一过程 语法: 被除数/除数 注意:除数不能为0,且被除数和除数都得是数字 b.应用场景 1.和取模运 ...

  2. 关于取模运算(mod)和求余(rem)运算

    通常情况下取模运算(mod)和求余(rem)运算被混为一谈,因为在大多数的编程语言里,都用'%'符号表示取模或者求余运算.在这里要提醒大家要十分注意当前环境下'%'运算符的具体意义,因为在有负数存在的 ...

  3. python np.mod() 取模运算

    python np.mod() 取模运算 取模运算并非算术运算中的取余运算%,看代码发现使用取余计算的结果一直都对不上,为了打破这个误区,手动计算探索其内部原因呀~ python np.mod()的取 ...

  4. python中mod运算符_Python中的取模运算方法

    所谓取模运算,就是计算两个数相除之后的余数,符号是%.如a % b就是计算a除以b的余数.用数学语言来描述,就是如果存在整数n和m,其中0 <= m < b,使得a = n * b + m ...

  5. 大数取模运算,快速幂取模运算

    1.快速幂取模 http://www.cnblogs.com/yinger/archive/2011/06/08/2075043.html 快速幂取模就是在O(logn)内求出a^n mod b的值. ...

  6. 取模运算性质_求余、取模运算在RTOS中计算优先级的理解

    uCOS3中的部分源码: /* 置位优先级表中相应的位 */ void OS_PrioInsert (OS_PRIO prio) { CPU_DATA bit; CPU_DATA bit_nbr; O ...

  7. 【转】数学与编程——求余、取模运算及其性质

    一.求余运算(Remainder) (参考维基百科: http://zh.wikipedia.org/wiki/余数  http://en.wikipedia.org/wiki/Remainder h ...

  8. 分数的乘法逆元和负数的取模运算

    1.乘法逆元 A.定义 如果ax≡1 (mod p),且gcd(a,p)=1(a与p互质),则称a关于模p的乘法逆元为x. 既然有ax≡1 (mod p),那么有ax - py = 1,x是a关于模p ...

  9. 3位水仙花数计算pythonoj_简述 取模运算Modulo Operation 及其与 取余运算Complementation 区别联系...

    综述: 取模运算("Modulo Operation")和取余运算("Complementation ")两个概念有重叠的部分但又不完全一致.主要的区别在于对负 ...

最新文章

  1. [转]Java Os Properties
  2. IBM重磅开源Power芯片指令集?国产芯迎来新机遇?
  3. Normal2Height工具已经完成
  4. TouTiao开源项目 分析笔记9 实现一个问答主页面
  5. couldn't connect to server 127.0.0.1:27017 src/mongo/
  6. NSLog中格式符列表
  7. Hadoop完全分子式环境搭建—问题及解决办法
  8. 文件操作(解密加密)
  9. oracle机票,全球机票分销系统
  10. 学Python必看,Python中encode(),decode()的本质
  11. Python: names, values, assignment and mutability
  12. Win10的Flash不能运行,报错——“暴力”解法
  13. 逆思维:GAN不能生成什么?Seeing What a GAN Cannot Generate
  14. 华为服务器串口修改密码,huawei恢复Console口密码
  15. 机械键盘——红轴、黑轴、茶轴、青轴、奶轴、X轴的故事
  16. 二十一世纪大学英语读写教程学习笔记(原文)——2 - Conversational Ballgames(对话风格与球类运动)
  17. 解决小程序-wx.canvasGetImageData()-RGB取色盘苹果手机获取颜色慢问题
  18. Android中的常见时区
  19. length,length(),size()详解及区别
  20. How to recover from #39;programmers burnout(转)

热门文章

  1. 收发电子发票用什么邮箱?
  2. 数据链路层------基于TCP/IP五层模型
  3. 青蛙跳台阶变态青蛙跳台阶
  4. yolov4离线安装笔记
  5. Redis协议spec(翻译)
  6. OpenGL学习笔记:矩阵变换
  7. 收益率的分解 无风险利率
  8. 解决CENTOS下There are no enabled repos.的问题
  9. 前端中DOM是什么,怎样理解dom
  10. Luxurious Houses - CodeForces - 581B